您的位置:首页 > 编程语言 > Java开发

java 文件或图片的上传小demo

2017-03-15 00:00 253 查看
摘要: java,文件,图片上传

在进行上传之前需要

commons-fileupload-1.3.1.jar
commons-io-2.4.jar

这两个包。

前端代码:

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

<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>设施名称</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>类别</td>
<td><input type="text" name="type"></td>
</tr>
<tr>
<td>照片</td>
<td><input type="file" name="phote"></td>
</tr>
<tr>
<td>简介</td>
<td>
<textarea rows="10" cols="50" name="desc"></textarea>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="提交">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>

后台的代码:

因为在页面使用了 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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息