layui 上傳完整教程 前後臺代碼 以及ssm一系列報錯問題解決 Expected MultipartHttpServletRequest

前端上傳代碼

layui.use('upload', function(){
	  var $ = layui.jquery
	  ,upload = layui.upload;
	  
	  //普通圖片上傳
	  var uploadInst = upload.render({
	    elem: '#test1'
	    ,url: '/SSM_Book/upload'
	    ,before: function(obj){
	      //預讀本地文件示例,不支持ie8
	      obj.preview(function(index, file, result){
	        $('#demo1').attr('src', result); //圖片鏈接(base64)
	      });
	    }
	    ,done: function(res){
	      //如果上傳失敗
	      if(res.code > 0){
	        return layer.msg('上傳失敗');
	      }
	      //上傳成功
	    }
	    ,error: function(){
	      //演示失敗狀態,並實現重傳
	      var demoText = $('#demoText');
	      demoText.html('<span style="color: #FF5722;">上傳失敗</span> <a class="layui-btn layui-btn-mini demo-reload">重試</a>');
	      demoText.find('.demo-reload').on('click', function(){
	        uploadInst.upload();
	      });
	    }
	  });
});
參數選項 說明 類型 默認值
elem 指向容器選擇器,如:elem: '#id'。也可以是DOM對象 string/object -
url 服務端上傳接口,返回的數據規範請詳見下文 string -
data 請求上傳接口的額外參數。如:data: {id: 'xxx'}
從 layui 2.2.6 開始,支持動態值,如:
 

codelayui.code

  1. data: {
  2. id: function(){
  3. return $('#id').val();
  4. }
  5. }
  6.  
object -
headers 接口的請求頭。如:headers: {token: 'sasasas'}。注:該參數爲 layui 2.2.6 開始新增
accept 指定允許上傳時校驗的文件類型,可選值有:images(圖片)、file(所有文件)、video(視頻)、audio(音頻) string images
acceptMime 規定打開文件選擇框時,篩選出的文件類型,值爲用逗號隔開的 MIME 類型列表。如:
acceptMime: 'image/*'(只顯示圖片文件)
acceptMime: 'image/jpg, image/png'(只顯示 jpg 和 png 文件)
注:該參數爲 layui 2.2.6 開始新增
string images
exts 允許上傳的文件後綴。一般結合 accept 參數類設定。假設 accept 爲 file 類型時,那麼你設置 exts: 'zip|rar|7z' 即代表只允許上傳壓縮格式的文件。如果 accept 未設定,那麼限制的就是圖片的文件格式 string jpg|png|gif|bmp|jpeg
auto 是否選完文件後自動上傳。如果設定 false,那麼需要設置 bindAction 參數來指向一個其它按鈕提交上傳 boolean true
bindAction 指向一個按鈕觸發上傳,一般配合 auto: false 來使用。值爲選擇器或DOM對象,如:bindAction: '#btn' string/object -
field 設定文件域的字段名 string file
size 設置文件最大可允許上傳的大小,單位 KB。不支持ie8/9 number 0(即不限制)
multiple 是否允許多文件上傳。設置 true即可開啓。不支持ie8/9 boolean false
number 設置同時可上傳的文件數量,一般配合 multiple 參數出現。
注意:該參數爲 layui 2.2.3 開始新增
number 0(即不限制)
drag 是否接受拖拽的文件上傳,設置 false 可禁用。不支持ie8/9 boolean true
回調
choose 選擇文件後的回調函數。返回一個object參數,詳見下文 function -
before 文件提交上傳前的回調。返回一個object參數(同上),詳見下文 function -
done 執行上傳請求後的回調。返回三個參數,分別爲:res(服務端響應信息)、index(當前文件的索引)、upload(重新上傳的方法,一般在文件上傳失敗後使用)。詳見下文 function -
error 執行上傳請求出現異常的回調(一般爲網絡異常、URL 404等)。返回兩個參數,分別爲:index(當前文件的索引)、upload(重新上傳的方法)。詳見下文 function -

SSM框架後端接收代碼

 

嚴重: Servlet.service() for servlet springServlet threw exception java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?   問題解決

at org.springframework.util.Assert.notNull(Assert.java:112)   

spring mvc中上傳附件,需要做兩步操作

 

1.引入包commons-fileupload-1.3.jar,版本號可以根據項目情況調整;  

2引入包commons-IO

3.在spring mvc配置文件中增加配置,文件大小限制可根據項目情況調整:

<!-- 上傳文件攔截,設置最大上傳文件大小   10M=10*1024*1024(B)=10485760 bytes --> 

<!-- 配置多媒體解析器 -->
    <!-- 定義文件上傳解析器 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 設定默認編碼 -->
        <property name="defaultEncoding" value="UTF-8"></property>
        <!-- 設定文件上傳的最大值10MB,10*1024*1024 -->
        <property name="maxUploadSize" value="10485760"></property>
    </bean>

關於tomcat路徑下重啓文件被清除問題,或者上傳的圖片無法顯示在瀏覽器中。
這個就需要在Tomcat中的conf文件夾下配置server.xml的<Host></host>標籤對中定義一個虛擬目錄了,只需要加上以下代碼即可解決。
要注意:上傳的文件最好不要放在項目目錄下(其實我是沒辦法解決在項目目錄下上傳文件)然後加上以下代碼,

<Context path="/upload/" docBase="D:/UPLOAD/" />   

在 eclipse 下配置server

創作不易,轉發請引用地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章