前端上傳代碼
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
|
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
創作不易,轉發請引用地址