文件上传功能的实现
来源:互联网 发布:csp 1.67mac汉化破解版 编辑:程序博客网 时间:2024/05/09 22:34
前提:拷入两个包:
一、Jsp页面设置:
制作表单:
<form action="${pageContext.request.contextPath}/AddProdServlet"method="post"enctype="multipart/form-data">
<table border="1">
<tr>
<td>商品图片</td>
<td><inputtype="file"name="file1"/></td>
</tr>
<tr>
<tdcolspan="2"><inputtype="submit"value="添加商品"/></td>
</tr>
</table>
</form>
二.Servlet操作:
//创建map对象放置文件上传名和值
Map<String, String> map =new HashMap<String,String>();
//创建DiskFileItemFactory对象,设置缓冲区大小和文件目录
DiskFileItemFactory factory =newDiskFileItemFactory()
factory.setSizeThreshold(1024*100);
factory.setRepository(new File(this.getServletContext()
.getRealPath("/WEB-INF/tmp")));
// 使用DiskFileItemFactory对象创建ServletFileUpload对象,并设置上传文件的大小限制。
ServletFileUpload fileUpload =new ServletFileUpload(factory);
//检查是否是正确的文件上传表单(使用isMultipartContent可以判断是普通表单还是带有文件的表单)
if(!fileUpload.isMultipartContent(request))
{
thrownew RuntimeException("请用正确的表单进行上传");
}
//设置单个文件上传的大小
fileUpload.setFileSizeMax(1024 * 10204 * 5);
//设置文件上传的总大小
fileUpload.setSizeMax(1024 * 10204 * 200);
//设置编码,解决上传文件名的乱码问题
fileUpload.setHeaderEncoding("utf-8");
//文件上传解析请求
List<FileItem> list =fileUpload.parseRequest(request);
//使用增强for循环遍历文件上传的内容
for (FileItemitem : list) {
//如果当前返回的内容是普通表单的类型
if (item.isFormField()) {
//定义nameame用于返回表单标签name属性的值
Stringname =item.getFieldName();
//设置返回的value值是utf-8的格式
Stringvalue =item.getString("utf-8");
//将文件上传名和值放置到map中
map.put(name,value);
// System.out.println(name+" "+value);
}else {
//如果不是普通表单的形式
Stringname =item.getName();
//创建随机名称,这样能够方便让上传文件名唯一
StringuuidName = UUID.randomUUID().toString()+name;
// System.out.println(uuidName);
//创建文件保存的路径
Stringpath =this.getServletContext().getRealPath(
"/WEB-INF/upload");
//在系统中利用hashCode值,这样才能确保图片上传是唯一的
inthashCode =uuidName.hashCode();
//将hashCode值转换成十六进制的字符串
StringhashStr = Integer.toHexString(hashCode);
//将获得的字符串转换成数组
charhss[] =hashStr.toCharArray();
Stringimgurl="/WEB-INF/upload";
//遍历,这样可以让文件包分配资源合理
for (charc : hss) {
path +="/" + c;
imgurl +="/" + c;
}
imgurl +="/" + uuidName;
map.put("imgurl",imgurl);
new File(path).mkdirs();
System.out.println(path);
//文件的读写
InputStreamin =item.getInputStream();
OutputStreamout =new FileOutputStream(new File(path,uuidName));
IOUtils.In2Out(in,out);
IOUtils.close(in,out);
//删除临时文件
item.delete();
PicUtilspicUtils =new PicUtils(path+"/"+uuidName);
picUtils.resizeByHeight(100);
}
}
Prodprod =new Prod();
//将前台传过来的数据封装到javaBean中;
BeanUtils.populate(prod,map);
service.addProd(prod);
//3提示成功,返回首页
response.getWriter().write("添加商品成功!3秒回首页");
response.setHeader("Refresh","3;url="+request.getContextPath()+"/index.jsp");
}catch (Exceptione) {
e.printStackTrace();
}
- 文件上传功能的实现
- 文件上传功能的实现
- 文件上传功能的实现
- 文件上传功能的实现
- 文件上传功能的实现
- 文件上传功能实现
- Struts文件上传功能的实现
- webwork实现文件上传的功能
- commons-upload 实现文件的上传功能
- 文件上传之前的预览功能实现
- Servlet文件上传功能的实现
- struts2文件上传功能的实现
- SVN客户端上传文件功能的实现
- Servlet文件上传功能的实现!
- Servlet实现多文件上传的功能
- 文件上传与下载的功能实现
- tomcat 支持文件上传的功能实现
- jsp+servlet实现文件的上传功能
- 数据挖掘-目录-集成算法
- 2017年3月18日奇虎360 笔试真题(3个编程题)
- L1-006. 连续因子
- 20170324_Linux作业_1
- 在结构体最后定义一个长度为0的字符数组(技巧)
- 文件上传功能的实现
- maven 打包带有层级关系的项目
- PL SQL怎么导出表和表数据
- JQuery表单/插件/Ajax/Table/特效/拓展/动画/选择器
- QT之GUI学习笔记(十七)---事件过滤器
- Android的开机流程及对应源码位置分析
- 震惊!!C语言中动态开辟居然...
- appium自动化_测试登录和初始化代码
- js setInterval函数和setTimeOut函数的区别