SpringMVC + jquery.uploadify實現(xiàn)上傳文件功能
前言
以前用Asp.net MVC+uploadify上傳文件,最近學(xué)習(xí)SpringMVC,所以就用SpringMVC+uploadify做個上傳文件的demo。
剛開始用form表單的方式提交,在Controller Action中用@RequestParam MultipartFile file就能拿到上傳文件信息。后我直接使用uploadify的方式上傳,接口沒有做任何調(diào)整,上傳的過程中報http400, 客戶端的請求不符合接口的要求,表單post提交時報文參數(shù)是以Form Data方式,而換成uploadify時參數(shù)格式則是request payload的方式,所以把接口改寫成MultipartServletRequest的方式
開發(fā)環(huán)境
SpringMVC4、Uploadify、
上傳文件的話還需要下載 commons-fileupload ,同時還會下載common-io、common-logging
項目結(jié)構(gòu)
普通表單上傳
<form action="/User/index" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="upload"/> </form>
@RequestMapping("upload") public @ResponseBody String upload(@RequestParam MultipartFile file) throws IOException { String path =request.getSession().getServletContext().getRealPath("upload"); File file=new File(path,file.getOriginalFilename()); file.transferTo(file); //保存文件 return "/success"; }
uploadify上傳文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Index</title> <link href="/2sc/uploadify/uploadify.css" rel="external nofollow" rel="stylesheet" type="text/css" /> <script src="/2sc/js/jquery-1.4.2.js" type="text/javascript"></script> <script src="/2sc/uploadify/jquery.uploadify.js" type="text/javascript"></script> <style type="text/css"> #fileQueue {position: absolute;bottom: 0;right: 0;} </style> </head> <body> spring mvc 上傳文件 <div id="fileQueue"> </div> <input type="file" name="uploadify" id="uploadify" /> <script type="text/javascript"> $(function () { $("#uploadify").uploadify({ 'method':'post', //指定swf文件 'swf': '/2sc/uploadify/uploadify.swf', //后臺處理的頁面 'uploader': '/User/upload', //按鈕顯示的文字 'buttonText': '上傳圖片', //顯示的高度和寬度,默認(rèn) height 30;width 120 //'height': 15, //'width': 80, //上傳文件的類型 默認(rèn)為所有文件 'All Files' ; '*.*' //在瀏覽窗口底部的文件類型下拉菜單中顯示的文本 'fileTypeDesc': 'Image Files', //允許上傳的文件后綴 'fileTypeExts': '*.gif; *.jpg; *.png', //發(fā)送給后臺的其他參數(shù)通過formData指定 'formData': { 'someKey': 'someValue'}, //上傳文件頁面中,你想要用來作為文件隊列的元素的id, 默認(rèn)為false 自動生成, 不帶# 'queueID': 'fileQueue', //選擇文件后自動上傳 'auto': true, //設(shè)置為true將允許多文件上傳 'multi': true }); }); </script> </body> </html>
接口
@RequestMapping(value = "/upload",method = RequestMethod.POST) public @ResponseBody String upload(HttpServletRequest request, HttpServletResponse response){ String path =request.getSession().getServletContext().getRealPath("upload"); MultipartHttpServletRequest multipartHttpServletRequest=(MultipartHttpServletRequest)request; Map<String,MultipartFile> map = multipartHttpServletRequest.getFileMap(); System.out.println("path:"+path); File file=new File(path); if(!file.exists()){ file.mkdirs(); } try{ for(Map.Entry<String,MultipartFile> entity:map.entrySet()){ MultipartFile multipartFile=entity.getValue(); File ff = new File(path,multipartFile.getOriginalFilename()); multipartFile.transferTo(ff); } return "success"; }catch (Exception e){ e.printStackTrace(); return "error"; } }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
SpringBoot內(nèi)置tomcat參數(shù)調(diào)優(yōu)的實現(xiàn)
springboot內(nèi)置了tomcat, 并給我們設(shè)置了默認(rèn)參數(shù), 我們怎么樣修改springboot內(nèi)置的tomcat參數(shù),本文就詳細(xì)的來介紹一下,感興趣的可以了解一下2023-09-09Intellij IDEA導(dǎo)入eclipse web項目的操作步驟詳解
Eclipse當(dāng)中的web項目都會有這兩個文件,但是idea當(dāng)中應(yīng)該是沒有的,所以導(dǎo)入會出現(xiàn)兼容問題,但是本篇文章會教大家如何導(dǎo)入,并且導(dǎo)入過后還能使用tomcat運行,需要的朋友可以參考下2023-08-08Java封裝數(shù)組之動態(tài)數(shù)組實現(xiàn)方法詳解
這篇文章主要介紹了Java封裝數(shù)組之動態(tài)數(shù)組實現(xiàn)方法,結(jié)合實例形式詳細(xì)分析了java動態(tài)數(shù)組的實現(xiàn)原理、操作步驟與相關(guān)注意事項,需要的朋友可以參考下2020-03-03Java線程之間數(shù)據(jù)傳遞的實現(xiàn)示例(4種)
我們經(jīng)常會遇到父子線程數(shù)據(jù)傳遞(非調(diào)用參數(shù))的場景,本文主要介紹了Java線程之間數(shù)據(jù)傳遞的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08Spring Data JPA 實現(xiàn)多表關(guān)聯(lián)查詢的示例代碼
多表查詢在spring data jpa中有兩種實現(xiàn)方式,第一種是利用hibernate的級聯(lián)查詢來實現(xiàn),第二種是創(chuàng)建一個結(jié)果集的接口來接收連表查詢后的結(jié)果,這里介紹第二種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Spring中的BeanFactory與FactoryBean區(qū)別詳解
這篇文章主要介紹了Spring中的BeanFactory與FactoryBean區(qū)別詳解,BeanFactory是一個接口,它是spring中的一個工廠,FactoryBean也是一個接口,實現(xiàn)了3個方法,通過重寫其中方法自定義生成bean,需要的朋友可以參考下2024-01-01