这篇文章主要介绍了怎么使用Java服务器处理图片上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Java服务器处理图片上传文章都会有所收获,下面我们一起来看看吧。
一、简述
第一:浏览器上传图片实现;
第二:微信小程序上传图片实现;
二、图片上传功能实现
处理H5的单文件上传实现:
package cn.ncist.tms.attachment.controller; import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.HashMap;import java.util.Map; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile; @RequestMapping(value = "/fileUpload")@Controllerpublic class AttachmentUpload { @RequestMapping(value = "/doFileUpload",method = RequestMethod.POST) @ResponseBody public Map<String,Object> doFileUpload(HttpServletRequest request, HttpServletResponse reponse, @RequestParam("file") MultipartFile srcFile) throws IOException{ //1.变量声明 Map<String,Object> result = null;// 返回结果变量 FileOutputStream fos = null; //写入文件的变量 File destFile = null; //写入的目的地文件(distination) try { result = new HashMap<String,Object>(); //2.参数验证 if(srcFile == null){ throw new RuntimeException("上传文件不存在"); } if(srcFile.getBytes().length == 0){ throw new RuntimeException("上传文件内容为空"); } //3.操作文件对象,写入本地目录的文件中 //3.1 截取文件后缀 String ext = srcFile.getOriginalFilename().substring(srcFile.getContentType().lastIndexOf( ".")+1); //3.2 实例化目标文件,根据当前的操作系统,指定目录文件, destFile = new File("D:"+File.separator+"descFolder"+File.separator+"descFile."+ext); //3.3 实例化流 fos = new FileOutputStream(destFile); //3.4 获取写入的字节数组,并写入文件 byte[] srcBytes = srcFile.getBytes(); fos.write(srcBytes); fos.flush(); //4.对输入、输出流进行统一管理 //已在文件finally代码块处理 result.put( "code", "S"); result.put( "msg", "服务调用成功"); result.put( "path", destFile.getAbsolutePath()); return result; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); result = new HashMap<String,Object>(); result.put( "code", "F"); result.put( "msg", "服务调用失败"); result.put( "path", null); return result; } finally{ //关闭系统资源,避免占用资源. if(fos != null){ fos.close(); } } }}
微信或手机APP上传图片文件的代码实现:
import java.io.BufferedInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set; import javax.annotation.Resource;import javax.servlet.ServletInputStream;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.jboss.netty.handler.codec.http.HttpRequest;import org.springframework.mock.web.MockMultipartFile;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest; import com.hlinkcloud.ubp.core.constant.RedisKeyConstant;import com.hlinkcloud.ubp.core.service.RedisService;import com.hlinkcloud.ubp.core.util.BaseStringUtil;import com.hlinkcloud.ubp.facade.bean.common.FastDFSFile;import com.hlinkcloud.ubp.facade.bean.common.FileManagerConfig;import com.hlinkcloud.ubp.facade.service.common.FileInfoService;import com.hlinkcloud.ubp.facade.service.permission.UserService;import com.hlinkcloud.ubp.facade.util.DictionaryCommUtil; import fr.opensagres.xdocreport.core.io.internal.ByteArrayOutputStream; @Controller@RequestMapping("/wx_upload")public class WxUploadImgBusiness { @Resource private UserService userService; @Resource private RedisService redisService; @Resource(name = "commonUtil") private DictionaryCommUtil commUtil; @Resource private FileInfoService fileService; @RequestMapping("/getUploadFilePath") @ResponseBody public Map<String, Object> doWxUploadFile(HttpServletRequest request, HttpServletResponse response) { HashMap<String, Object> map = new HashMap<String, Object>(); try { // 1.将请求转化为操作流的请求对象. MultipartHttpServletRequest req = (MultipartHttpServletRequest) request; MultipartFile picture = req.getFile("file"); if(picture != null && picture.getBytes().length != 0){ // 2.将图片上传到服务器 byte[] bytes = picture.getBytes(); String ext = picture.getOriginalFilename().substring( picture.getOriginalFilename().lastIndexOf(".") + 1 ); // (备注:下列代码为内部业务代码,可根据公司自身的需求,进行更改) map.put("code", "S"); map.put( "msg", "服务调用成功"); map.put("statusCode", 200); map.put("data", filePath); }else{ throw new RuntimeException("上传图片异常或空图片!"); } } catch (IOException e) { e.printStackTrace(); map.put("code", "F"); map.put("msg", "服务调用失败"); map.put("statusCode", 500); map.put("data", null); } return map; } @RequestMapping(value = "/doUploadFileOfCI" , method = RequestMethod.POST ) public @ResponseBody Map<String,Object> doUploadFile( HttpServletRequest request,//请求对象 HttpServletResponse response) throws IOException{//响应对象 System.out.println("doTestMultipartFile:"); MultipartHttpServletRequest req = (MultipartHttpServletRequest) request; //此时说明请求对象是MultipartHttpServletRequest对象 MultipartFile picture = req.getFile("UploadedImage"); //遍历请求得到所有的数据. if(req != null){ //获取所有属性名 Enumeration enume= req.getAttributeNames(); while(enume.hasMoreElements()){ System.out.println("enume:"+enume.nextElement()); } //获取所有文件名 Iterator<String> fileNames = req.getFileNames(); while(fileNames.hasNext()){ System.out.println("fileNames:"+fileNames.next()); } //获取操作文件的map Map<String,MultipartFile> fileMap = req.getFileMap(); if(fileMap != null && fileMap.size() > 0){ Set<String> set = fileMap.keySet(); for(String key:set){ System.out.println("String:"+key); } } //获取请求流 InputStream is = req.getInputStream(); System.out.println("InputStream:"+is); int length = -1; while( (length = is.read()) != -1 ){ System.err.println("data:"+length); } //获取所有请求参数 Enumeration enumee = req.getParameterNames(); while(enumee.hasMoreElements()){ System.out.println("enumee:"+enumee.nextElement()); } } System.out.println(picture); return null; } }
关于“怎么使用Java服务器处理图片上传”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么使用Java服务器处理图片上传”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。