文件上传(图片)

今天在宿舍学习了一个简单的文件(只针对于图片)的上传的方法

现在我将这个文件上传的伪代码粘贴出来,以供享用,以便于记录。

这个图片上传是和数据库联系在一起的
将图片上传到指定的位置后,将图片的名称也上传到了所对应的数据库中
同时,不是上传的类型,也就是说是普通的字段(不是图片的)也可以保存到数据库中

这里还需要两个架包可以在apache.org去下载

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

需要注意的是:将JSP中的表单<form>的enctype属性更改为multipatr-form-data,它一般默认为application/x-www-form-urlencoded


//得到文件(图片)上传后的路径
String path = request.getServletContex.getReallPath("文件保存的位置");
//创建磁盘工厂
DiskFileItemFactor df = new DiskFileItemFactor();
//创建文件上传的类,参数是磁盘工厂的对象
ServletFileUpLoad sf = new ServletFileUpLoad(df);
//得到表单中的所有的元素放在集合中
List<FileItem> list = sf.parseRequest(request);
//遍历表三所有元素如果是普通的字段(普通文本内容),方法是
for(FileItem fileItem : ls){   //遍历表单中的元素
if(fileItem.isFormField()){   //表示普通的文本内容 
if("表单中普通文本的name".equals(fileItem.GetName())){
VO类的对象.set()方法, 参数是fileItem.getString()
}
}else{   //表示是上传的文件类型
fname = fileItem.getName(); 得到原来文件的名称
houzhui = fname.substring(fname.lastIndexOf("."));  //得到原来文件的后缀
rename = UUID.randomUUID+fname;     //创建一个新的文件的名称
//创建一个File对象
File f = new File(文件保存的路径+"/"+rename);
//将文件写入
fileItem.write(f);
}
//这里将上传的文件的名称保存在数据库中
VO类的对象.set()方法。  参数是上传文件的新的名称
调用方法保存到数据库的方法
}

//连接数据库类

package com.lipan.DB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBManger {
//连接数据库
public Connection conn;
PreparedStatement ps;
ResultSet rs;

//创建一个方法连接数据库
public Connection GetConn(){
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bookshop","root","120407");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}

//定义保存的方法
public int Update(String sql,Object[] obj){
conn=new DBManger().GetConn();
int count = 0;
try {
ps=conn.prepareStatement(sql);
//增加判断的语句,有没有需要执行跟新的对象
if(obj!=null&&obj.length>0) {
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
count=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
closeAll();
}
return count;
}
//定义一个关闭数据库的方法
public void closeAll(){
try {
if(conn!=null){
conn.close();
if(ps!=null){
ps.close();
 }
if(rs!=null){
rs.close();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//测试
public static void main(String[] args) {
DBManger db = new DBManger();
System.out.println(db.GetConn());
}
}

//Dao类

package com.lipan.up.Dao;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
import org.apache.taglibs.standard.tag.el.sql.UpdateTag;
import com.lipan.DB.DBManger;
import com.lipan.up.Vo.Up;

public class UpDao extends DBManger{
Connection conn;
//创建一个方法来保存
public void save(Up up){
int count =Update("insert into updownload values(?,?)",new Object[]{up.getName(),up.getImg()});
if(count>0) {
System.out.println("图书"+up.getName()+"成功!");
}else{
System.out.println("图书"+up.getName()+"失败!");
}
}
}

//Vo类

package com.lipan.up.Vo;
public class Up {
private String name;
private String img;
public Up(){

}
public Up(String name, String img) {
super();
this.name = name;
this.img = img;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getImg() {
return img;
}

public void setImg(String img) {
this.img = img;
}
}

//Servlet

package com.lipan.upDownLoadweb;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.lipan.up.Dao.UpDao;
import com.lipan.up.Vo.Up;
public class UpDownLoad extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//得到文件上传的路径
String path=request.getServletContext().getRealPath("/WEB-INF/up");
//创建磁盘工厂
DiskFileItemFactory df = new DiskFileItemFactory();
//创建文件上传的类
ServletFileUpload sf = new ServletFileUpload(df);
Up pp = new Up();
UpDao dao = new UpDao();
String relname=null;
//得到表单中的所有的元素
try {
List<FileItem> ls = sf.parseRequest(request);
//遍历表单中的所有的元素
for (FileItem fileItem : ls) {
//判断是否是普通文件

if(fileItem.isFormField()){   //表示普通的字段
if("name".equals(fileItem.getFieldName())){
pp.setName(fileItem.getString());
}
}else{  //表示是上传的文件类型
String fnname = fileItem.getName();  //得到原来文件的名称
String filename =fnname.substring(fnname.lastIndexOf("."));//得到后缀名 
relname = UUID.randomUUID()+filename;//得到新的文件的名称
//创建File 对象,将文件写入

File f = new File(path+"/"+relname); //得到完整的文件的存储路径和文件全名
fileItem.write(f);
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pp.setImg(relname);
dao.save(pp);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值