文件上传和字段匹配
2023-09-11 14:18:04 时间
jsp页面中
<form action="${pageContext.request.contextPath}/servlet/ManagerServlet?operation=addBook" method="post" enctype="multipart/form-data">
FileItem的用法
http://blog.csdn.net/smallhorn/article/details/7864658
1.boolean isFormField()。isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段。如果是普通文本表单字段,返回一个true否则返回一个false。因此可以用该方法判断是否是普通表单域还是文件上传表单域。
2.String getName()。getName方法用来获得文件上传字段中的文件名。
3.String getFieldName()。getFieldName方法用来返回表单标签的name属性的值。
5.String getString()。getString()方法将FileItem对象中保存的数据流内容以一个字符串返回。它有两个重载形式。public java.lang.String getString()和public java.lang.String getString(java.lang.String
servlet中
1 //添加书籍到数据库中 2 private void addBook(HttpServletRequest request, 3 HttpServletResponse response) throws ServletException, IOException { 4 String resultPath = ""; 5 String storePath = getServletContext().getRealPath("/files"); 6 try { 7 Book book = new Book(); 8 9 DiskFileItemFactory factory = new DiskFileItemFactory(); 10 ServletFileUpload upload = new ServletFileUpload(factory); 11 //解析请求 12 List<FileItem> items = upload.parseRequest(request); 13 for(FileItem item:items){ 14 if(item.isFormField()){ 15 //封装数据到JavaBean中 16 String fieldName = item.getFieldName();//字段名,即javabean的属性名,除了图片 17 String fieldValue = item.getString(request.getCharacterEncoding()); 18 BeanUtils.setProperty(book, fieldName, fieldValue);//除了图片路径,其他数据都有了 19 }else{ 20 //处理文件上传 21 InputStream in = item.getInputStream(); 22 String fileName = item.getName();// c:\dsf\a.jpg 23 fileName = UUID.randomUUID()+fileName.substring(fileName.lastIndexOf("\\")+1);//a.jpg 24 //设置存取的图片文件名 25 book.setImage(fileName); 26 OutputStream out = new FileOutputStream(storePath+"\\"+fileName); 27 byte b[] = new byte[1024]; 28 int len = -1; 29 while((len=in.read(b))!=-1){ 30 out.write(b, 0, len); 31 } 32 out.close(); 33 in.close(); 34 item.delete();//删除临时文件 35 } 36 } 37 s.addBook(book); 38 //查询分类 39 List<Category> cs = s.findAllCategory(); 40 request.setAttribute("cs", cs); 41 resultPath = "/manager/addBook.jsp"; 42 request.setAttribute("message", "<script type='text/javascript'>alert('添加成功')</script>"); 43 } catch (Exception e) { 44 e.printStackTrace(); 45 resultPath = "/message.jsp"; 46 request.setAttribute("message", "服务器忙"); 47 } 48 request.getRequestDispatcher(resultPath).forward(request, response); 49 }
相关文章
- flask-restful编写上传文件api,文件可以是图片视频等
- 微信小程序 - 音乐列表点击播放 / 暂停音频,流畅切换音频(支持暂停音乐后,保留音乐 “进度“ 继续播放)最好用最详细的源码示例教程,适用于wechat列表点击后播放 mp3 wav 文件的需求
- 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)
- Web自动化-Selenium自动化测试-12-文件上传问题
- Struts2文件上传与下载
- 我是怎么做到开源系统中的文件上传等功能的?
- Python保存json文件并格式化
- 【AGC】iOS平台ipa包的dsym文件上传失败解决方法
- vue原生input上传文件
- Spring Cloud Feign的文件上传实现
- window系统使用tftp下载和上传文件
- Linux comm命令求出文件的交集、差集
- Qt编写推流综合应用示例(文件推流/桌面推流/本地摄像头/网络摄像头/转发推流/视频分发)
- (独孤九剑)--文件上传
- ArcGIS Server生成文件的权限问题处理
- Vue上传文件:ElementUI中的upload实现
- 8设备文件
- sql server段落还原/部分还原,sql server文件组的备份还原,sql server文件的备份还原
- Selenium上传文件与webdriver_helper的用法(Web UI)
- php发送 与接收流文件