您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么使用Java服務(wù)器處理圖片上傳的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇怎么使用Java服務(wù)器處理圖片上傳文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。
第一:瀏覽器上傳圖片實(shí)現(xiàn);
第二:微信小程序上傳圖片實(shí)現(xiàn);
1.處理H5的單文件上傳實(shí)現(xiàn):
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; /** * 附件上傳類 * * @author Fxh * */ @RequestMapping(value = "/fileUpload") @Controller public class AttachmentUpload { /** * 上傳文件功能,以Post請(qǐng)求發(fā)送請(qǐng)求, * * @param request:請(qǐng)求對(duì)象 * @param reponse:響應(yīng)對(duì)象 * @param file:上傳的文件對(duì)象 * @return JSON串 : {"code":"S","msg":"服務(wù)調(diào)用成功"} * @throws IOException */ @RequestMapping(value = "/doFileUpload",method = RequestMethod.POST) @ResponseBody public Map<String,Object> doFileUpload(HttpServletRequest request, HttpServletResponse reponse, @RequestParam("file") MultipartFile srcFile) throws IOException{ /* * 注意:傳入?yún)?shù)時(shí),文件的注解@ReuqestParam("variable") -->variable指:前端的h6的控件的name值. * * 文件處理功能: 1.將獲取的字節(jié)數(shù)組轉(zhuǎn)化為文件對(duì)象,并保存在本地目錄中; * * 文件處理思路: 1.將獲取的(source)file對(duì)象,通過(guò)函數(shù)獲取字節(jié)數(shù)組; * 2.實(shí)例化文件對(duì)象和文件輸出流; * 3.將字節(jié)數(shù)組寫入文件即可. * * 功能難度: 簡(jiǎn)單. */ //1.變量聲明 Map<String,Object> result = null;// 返回結(jié)果變量 FileOutputStream fos = null; //寫入文件的變量 File destFile = null; //寫入的目的地文件(distination) try { result = new HashMap<String,Object>(); //2.參數(shù)驗(yàn)證 if(srcFile == null){ throw new RuntimeException("上傳文件不存在"); } if(srcFile.getBytes().length == 0){ throw new RuntimeException("上傳文件內(nèi)容為空"); } //3.操作文件對(duì)象,寫入本地目錄的文件中 //3.1 截取文件后綴 String ext = srcFile.getOriginalFilename().substring(srcFile.getContentType().lastIndexOf( ".")+1); //3.2 實(shí)例化目標(biāo)文件,根據(jù)當(dāng)前的操作系統(tǒng),指定目錄文件, destFile = new File("D:"+File.separator+"descFolder"+File.separator+"descFile."+ext); //3.3 實(shí)例化流 fos = new FileOutputStream(destFile); //3.4 獲取寫入的字節(jié)數(shù)組,并寫入文件 byte[] srcBytes = srcFile.getBytes(); fos.write(srcBytes); fos.flush(); //4.對(duì)輸入、輸出流進(jìn)行統(tǒng)一管理 //已在文件finally代碼塊處理 result.put( "code", "S"); result.put( "msg", "服務(wù)調(diào)用成功"); 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", "服務(wù)調(diào)用失敗"); result.put( "path", null); return result; } finally{ //關(guān)閉系統(tǒng)資源,避免占用資源. if(fos != null){ fos.close(); } } } }
2.微信或手機(jī)APP上傳圖片文件的代碼實(shí)現(xiàn):
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; /** * 微信上傳圖片業(yè)務(wù) * * @author FengQi * */ @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; /* 文件服務(wù) */ @RequestMapping("/getUploadFilePath") @ResponseBody public Map<String, Object> doWxUploadFile(HttpServletRequest request, HttpServletResponse response) { HashMap<String, Object> map = new HashMap<String, Object>(); try { /* * // 注釋:該部分是使用在沒(méi)有使用sprinvMVC的架構(gòu)下的圖片上傳. // 1.磁盤文件條目工廠 * DiskFileItemFactory factory = new DiskFileItemFactory(); * * //2.1 高速的文件上傳處理類 ServletFileUpload sfu = new * ServletFileUpload(factory); * * List<FileItem> list = sfu.parseRequest(request); FileItem picture * = null; if(list != null && list.size() > 0){ for(FileItem item : * list){ if(!item.isFormField()){ picture = item; } } } */ // 1.將請(qǐng)求轉(zhuǎn)化為操作流的請(qǐng)求對(duì)象. MultipartHttpServletRequest req = (MultipartHttpServletRequest) request; MultipartFile picture = req.getFile("file"); if(picture != null && picture.getBytes().length != 0){ // 2.將圖片上傳到服務(wù)器 byte[] bytes = picture.getBytes(); String ext = picture.getOriginalFilename().substring( picture.getOriginalFilename().lastIndexOf(".") + 1 ); // (備注:下列代碼為內(nèi)部業(yè)務(wù)代碼,可根據(jù)公司自身的需求,進(jìn)行更改) map.put("code", "S"); map.put( "msg", "服務(wù)調(diào)用成功"); map.put("statusCode", 200); map.put("data", filePath); }else{ throw new RuntimeException("上傳圖片異?;蚩?qǐng)D片!"); } } catch (IOException e) { e.printStackTrace(); map.put("code", "F"); map.put("msg", "服務(wù)調(diào)用失敗"); map.put("statusCode", 500); map.put("data", null); } return map; } /** * 當(dāng)不知道手機(jī)、微信傳入前端的參數(shù)是什么時(shí), * * 可調(diào)用該接口進(jìn)行判斷. * * @param request * @param response * @return * @throws IOException */ @RequestMapping(value = "/doUploadFileOfCI" , method = RequestMethod.POST ) public @ResponseBody Map<String,Object> doUploadFile( HttpServletRequest request,//請(qǐng)求對(duì)象 HttpServletResponse response) throws IOException{//響應(yīng)對(duì)象 System.out.println("doTestMultipartFile:"); MultipartHttpServletRequest req = (MultipartHttpServletRequest) request; //此時(shí)說(shuō)明請(qǐng)求對(duì)象是MultipartHttpServletRequest對(duì)象 MultipartFile picture = req.getFile("UploadedImage"); //遍歷請(qǐng)求得到所有的數(shù)據(jù). 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); } } //獲取請(qǐng)求流 InputStream is = req.getInputStream(); System.out.println("InputStream:"+is); int length = -1; while( (length = is.read()) != -1 ){ System.err.println("data:"+length); } //獲取所有請(qǐng)求參數(shù) Enumeration enumee = req.getParameterNames(); while(enumee.hasMoreElements()){ System.out.println("enumee:"+enumee.nextElement()); } } System.out.println(picture); return null; } }
關(guān)于“怎么使用Java服務(wù)器處理圖片上傳”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“怎么使用Java服務(wù)器處理圖片上傳”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。