servlet图片上传

        
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(2*1024*1024);
        factory.setRepository(new File(path));
        
        
        try {
        	ServletFileUpload upload = new ServletFileUpload(factory);
            
			List<FileItem> list = upload.parseRequest(req);
			
			Util.fileFormatValidate(list);//文件后缀
			Util.fileNumsValidate(list);//文件数量限制
			Util.fileSizeValidate(list,temp);//文件大小限制
			
			Iterator<FileItem> iter = list.iterator();
			String dir = Util.createdir(path);//此次文件夹
			bean.setDir(dir);
			
			while(iter.hasNext()){
				 FileItem item = iter.next();
				 
				 if(!item.isFormField()){
	                    String fileName = item.getName();
	                    item.write(new File(path+"/"+dir+"/"+fileName));
				 }else{
					 String key = item.getFieldName();
				     String value = new String(item.getString().getBytes("ISO-8859-1"),"UTF-8");
				     map.put(key, value);
				     log.info(key+":"+value);
				 }
				 
			}
			bean = Util.getBean(bean, map);
			BeanDao.getInstance().insert(bean);
			
		}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在servlet中实现图片,可以使用Apache Commons File Upload库。以下是实现步骤: 1. 在web.xml文件中添加multipart-config配置: ``` <servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.example.UploadServlet</servlet-class> <multipart-config> <!-- 设置上文件大小的限制 --> <max-file-size>10485760</max-file-size> <!-- 设置请求数据大小的限制 --> <max-request-size>20971520</max-request-size> <!-- 设置临时文件存放路径 --> <location>/tmp</location> </multipart-config> </servlet> ``` 2. 在servlet中处理上请求: ``` protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 检查是否为multipart/form-data请求 boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Not a multipart request"); return; } // 创建文件上处理器 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); // 设置中文文件名编码 upload.setHeaderEncoding("UTF-8"); // 解析请求数据 try { List<FileItem> items = upload.parseRequest(request); // 遍历上文件 for (FileItem item : items) { // 如果是普通表单字段 if (item.isFormField()) { String fieldName = item.getFieldName(); String fieldValue = item.getString("UTF-8"); // 处理表单字段 } // 如果是上文件 else { String fieldName = item.getFieldName(); String fileName = item.getName(); long fileSize = item.getSize(); String contentType = item.getContentType(); // 处理上文件 InputStream inputStream = item.getInputStream(); // ... } } } catch (FileUploadException e) { e.printStackTrace(); } } ``` 3. 处理上文件: 在上面的代码中,处理上文件的部分需要自己实现,可以使用Java IO或者第三方库来实现。例如,使用Apache Commons IO库: ``` // 保存上文件到本地文件系统 File file = new File("/path/to/upload/" + fileName); FileUtils.copyInputStreamToFile(inputStream, file); ``` 注意,上文件操作需要确保文件名唯一,并且需要对上文件的大小、类型进行合法性检查。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值