本文實例為大家分享了java如何接收ios文件上傳的具體代碼,供大家參考,具體內容如下
ios Multipart/form-data POST請求java後台spring接口一直出錯,搞了兩天,終於解決了,積累下來
package com.xx.controller;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;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.ResponseBody;import com.nupaApp.model.FileMeta;@Controller@RequestMapping("/controller")public class File1Controller { LinkedList<FileMeta> files = new LinkedList<FileMeta>(); FileMeta fileMeta = null; /*************************************************** * URL: /rest/controller/upload upload(): receives files * * @param request * : MultipartHttpServletRequest auto passed * @param response * : HttpServletResponse auto passed * @return LinkedList<FileMeta> as json format * @throws IOException * @throws FileUploadException ****************************************************/ @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public String upload(HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException { boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判斷是否是表單文件類型DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload sfu = new ServletFileUpload(factory); List items = sfu.parseRequest(request);// 從request得到所有上傳域的列表for (Iterator iter = items.iterator(); iter.hasNext();) { FileItem fileitem = (FileItem) iter.next(); if (!fileitem.isFormField() && fileitem != null) {// 判讀不是普通表單域即是file // 操作fileitem文件步驟,可以獲取大小、路徑// 定義圖片輸出路徑String imgPath = "e:" + System.currentTimeMillis() + ".jpg"; // 定義圖片流InputStream fin = fileitem.getInputStream(); // 定義圖片輸出流FileOutputStream fout = new FileOutputStream(imgPath); // 寫文件byte[] b = new byte[1024]; int length = 0; while ((length = fin.read(b)) > 0) { fout.write(b, 0, length); } // 關閉數據流fin.close(); fout.close(); } } return "200"; }}pom.xml 添加
<!-- 這個用於上傳文件工具操作--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
spring-config.xml 添加bean
<!-- 配置文件上傳,如果沒有使用文件上傳可以不用配置,當然如果不配,那麼配置文件中也不必引入上傳組件包--> <bean id="multipartResolver " > <!-- 默認編碼--> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值--> <property name="maxUploadSize" value="10485760000" /> <!-- 內存中的最大值--> <property name="maxInMemorySize" value="40960" /> </bean>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。