當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点
生活随笔
收集整理的這篇文章主要介紹了
Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
(補充:再linux服務器上可能沒用創建文件的權限,那就需要找到文件夾給權限,比如我的chmod -R 777 /home/tomcat/apache-tomcat-default/webapps/food)
- 以前在servlet上寫過文件上傳和文件下載,最近由于需求需要集合到ssm中,有些坑點以前都忘記了。
- 文件上傳:文件上傳首先要在xml中配置上傳信息,ssm有強大的過濾功能,你不聲明讓某種類型進來他是進不來的,我是用的是servlet3.0的part上傳文件,省掉依賴包。
在web.xml中的springmvc配置中添加下面如下配置(配置方法可能很多,但是功能相同):
配置
<servlet> <servlet-name> springMvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name> <param-value> classpath*:food-servlet.xml</param-value></init-param> <load-on-startup> 1</load-on-startup><multipart-config> <max-file-size> 20971520</max-file-size> <max-request-size> 20971520</max-request-size> <file-size-threshold> 0</file-size-threshold> </multipart-config></servlet>代碼
下面是我的下載的模板:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import com.food.dao.foodMapper; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.http.Part; import java.io.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;import com.food.bean.path; @Controller public class uploadController {@Autowired(required = true)private foodMapper foodmapper;@RequestMapping(value="/onfile")public String uploadfile(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{HttpSession session=request.getSession();request.setCharacterEncoding("UTF-8");//response.setCharacterEncoding("UTF-8");Part part=request.getPart("file");upload(part,session);return "sucess";}public String getname(Part part)//獲取文件名{String contentdisposition=part.getHeader("content-disposition");//form-data; name="file"; filename="jsp??.txt"String[]filename=contentdisposition.split("=");//String filename1=filename[filename.length-1];//"jsp??.txt"String filename2=filename1.replace("\"", "");return filename2;}public void upload(Part part, HttpSession session) throws IOException{String path=session.getServletContext().getRealPath("food/");//System.out.println(path);String filename=getname(part);File file=new File(path);if(!file.exists())//{file.mkdirs();}File file2=new File(file,filename);//if(!file2.exists()){file2.createNewFile();}InputStream in=part.getInputStream();OutputStream out=new FileOutputStream(file2);BufferedInputStream buf=new BufferedInputStream(in);BufferedOutputStream bufout=new BufferedOutputStream(out);byte by[]=new byte[1024*10];int q=0;while((q=buf.read(by))!=-1){bufout.write(by);//by=new byte[1024]}bufout.close();buf.close();in.close();out.close();}}這個是我的一個小項目剪出來的下載模板,如果有問題修改修改就可以使用,或者可以私信我。
文件下載:文件上傳使用的是傳統的模板,有用sringmvc的方法的可以
文件下載的一個大坑:當時下載中文名成發現中文名變成"–"無法顯示中文,怎么改編碼都沒有用,后來看了百度說是tomcat的默認編碼is編碼問題,解決方法和get請求有時的亂碼解決很類似,字符串重新編碼。核心是:new String(filename.getBytes(“utf-8”),“ISO8859_1”));
文件上傳和下載一定要用buffer類,速度差別如果帶寬能夠滿足的話差別還是很大的。
如果對后端、爬蟲、數據結構算法等感性趣歡迎關注我的個人公眾號交流:bigsai
總結
以上是生活随笔為你收集整理的Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3模拟登陆人人网(reque
- 下一篇: 前后台分离使用cookie判断用户状态以