java图片上传demo_java 文件或图片的上传小demo

在进行上传之前需要

commons-fileupload-1.3.1.jar

commons-io-2.4.jar

这两个包。

前端代码:

在需要文件上传的表单中,需要把 enctype 设置为 multipart/form-data

设施名称
类别
照片
简介

后台的代码:

因为在页面使用了 multipart/form-data 方式进行提交,所有servlet后台不能用request.getParameter("name")来进行获取到对应的值,而是使用ServletFileUpload对象来进行解析。

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("gb2312");

response.setCharacterEncoding("gb2312");

// 获取根目录对应的真实物理路径(即部署在服务器的地址)

// 也就是说我们要把文件或图片存放到uploadImage该目录下

String path = getServletContext().getRealPath("uploadImage");

File uploadPath = new File(path);

// 如果目录不存在

if (!uploadPath.exists()) {

uploadPath.mkdir();

}

// 临时目录

File tempPath = new File(getServletContext().getRealPath("temp"));

if (!tempPath.exists()) {

tempPath.mkdir();

}

// DiskFileItemFactory:创建 FileItem 对象的工厂,可以设置相应的属性。

DiskFileItemFactory factory = new DiskFileItemFactory();

// 设置在内存中的大小

factory.setSizeThreshold(4096);

// 如果大小超过了内存中的设置的上限,则存到该临时目录下

factory.setRepository(tempPath);

ServletFileUpload upload = new ServletFileUpload(factory);

// 上传文件或图片的最大的大小,如果文件超过这个限制,则抛出异常

upload.setSizeMax(1000000 * 20);

try {

//获取所有的请求域

List fileItems = upload.parseRequest(request);

String name = null;

String type = null;

String desc = null;

String fileName = null;// 文件或照片的名字

for (Iterator iter = fileItems.iterator(); iter.hasNext();) {

//获取每个域

FileItem item = (FileItem) iter.next();

// 判断是文件还是文本信息

// 是普通的表单输入域

if (item.isFormField()) {

if ("name".equals(item.getFieldName())) {

//获取普通表单域的值

name = item.getString("gb2312").trim();

}

if ("type".equals(item.getFieldName())) {

type = item.getString("gb2312").trim();

}

if ("desc".equals(item.getFieldName())) {

desc = item.getString("gb2312").trim();

}

}

// file域

if (!item.isFormField()) {

// 上传文件的名称和完整路径

fileName = item.getName();

long size = item.getSize();

// 判断是否选择了文件

if ((fileName == null || fileName.equals("")) && size == 0) {

continue;

}

fileName = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());

item.write(new File(uploadPath, fileName));

}

}

// 将文件或图片文件名写入数据库

String sql = null;

db d = new db();

d.executeInsert(sql);

//继续后续操作

} catch (Exception e) {

System.out.println("上传失败");

e.printStackTrace();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值