SpringBoot+layui實(shí)現(xiàn)文件上傳功能
什么是spring boot
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。用我的話來理解,就是spring boot其實(shí)不是什么新的框架,它默認(rèn)配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道這樣比喻是否合適)。
頁面代碼(只需要引入基礎(chǔ)layui的css與js)
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
<legend>多文件列表上傳</legend>
</fieldset>
<div class="layui-upload">
<button type="button" class="layui-btn layui-btn-normal" id="testList">選擇多文件</button>
<div class="layui-upload-list">
<table class="layui-table">
<thead>
<tr><th>文件名</th>
<th>大小</th>
<th>狀態(tài)</th>
<th>操作</th>
</tr></thead>
<tbody id="demoList"></tbody>
</table>
</div>
<button type="button" class="layui-btn" id="testListAction">開始上傳</button>
</div>
JS
layui.use('upload', function(){
var $ = layui.jquery
,upload = layui.upload;
//多文件列表示例
var demoListView = $('#demoList')
,uploadListIns = upload.render({
elem: '#testList'
,url: 'upload/uploadFile'
,accept: 'file'
,multiple: true
,auto: false
,size: 5120
,bindAction: '#testListAction'
,choose: function(obj){
var files = this.files = obj.pushFile(); //將每次選擇的文件追加到文件隊(duì)列
//讀取本地文件
obj.preview(function(index, file, result){
var tr = $(['<tr id="upload-'+ index +'">'
,'<td>'+ file.name +'</td>'
,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
,'<td>等待上傳</td>'
,'<td>'
,'<button class="layui-btn layui-btn-mini demo-reload layui-hide">重傳</button>'
,'<button class="layui-btn layui-btn-mini layui-btn-danger demo-delete">刪除</button>'
,'</td>'
,'</tr>'].join(''));
//單個(gè)重傳
tr.find('.demo-reload').on('click', function(){
obj.upload(index, file);
});
//刪除
tr.find('.demo-delete').on('click', function(){
delete files[index]; //刪除對(duì)應(yīng)的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免刪除后出現(xiàn)同名文件不可選
});
demoListView.append(tr);
});
}
,done: function(res, index, upload){
if(res.code == 0){ //上傳成功
var tr = demoListView.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上傳成功</span>');
tds.eq(3).html(''); //清空操作
return delete this.files[index]; //刪除文件隊(duì)列已經(jīng)上傳成功的文件
}
this.error(index, upload);
}
,error: function(index, upload){
var tr = demoListView.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上傳失敗</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //顯示重傳
}
});
});
后臺(tái)接收
public final static String UPLOAD_FILE_PATH = "D:\\uploadFile\\";
@RequestMapping(value = "uploadFile")
public String uploadImage(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
Map<String, String> resObj = new HashMap<>(MAP_SIZE);
try {
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(new File(UPLOAD_FILE_PATH, file.getOriginalFilename())));
out.write(file.getBytes());
out.flush();
out.close();
} catch (IOException e) {
resObj.put("msg", "error");
resObj.put("code", "1");
return JSONObject.toJSONString(resObj);
}
resObj.put("msg", "ok");
resObj.put("code", "0");
return JSONObject.toJSONString(resObj);
} else {
return null;
}
}
總結(jié)
以上所述是小編給大家介紹的SpringBoot+layui實(shí)現(xiàn)文件上傳功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 解決springboot MultipartFile文件上傳遇到的問題
- 詳解SpringBoot文件上傳下載和多文件上傳(圖文)
- SpringBoot+Vue.js實(shí)現(xiàn)前后端分離的文件上傳功能
- springboot實(shí)現(xiàn)文件上傳和下載功能
- 詳解SpringBoot下文件上傳與下載的實(shí)現(xiàn)
- springboot 文件上傳大小配置的方法
- SpringBoot文件上傳控制及Java 獲取和判斷文件頭信息
- springboot實(shí)現(xiàn)單文件和多文件上傳
- SpringBoot實(shí)現(xiàn)文件上傳下載功能小結(jié)
- SpringBoot實(shí)現(xiàn)簡(jiǎn)單文件上傳功能
相關(guān)文章
基于Jackson實(shí)現(xiàn)API接口數(shù)據(jù)脫敏的示例詳解
用戶的一些敏感數(shù)據(jù),例如手機(jī)號(hào)、郵箱、身份證等信息,在數(shù)據(jù)庫以明文存儲(chǔ),但在接口返回?cái)?shù)據(jù)給瀏覽器(或三方客戶端)時(shí),希望對(duì)這些敏感數(shù)據(jù)進(jìn)行脫敏,所以本文就給大家介紹以惡如何利用Jackson實(shí)現(xiàn)API接口數(shù)據(jù)脫敏,需要的朋友可以參考下2023-08-08
Spring中基于xml的AOP實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring中基于xml的AOP實(shí)現(xiàn)詳解,基于xml與基于注解的AOP本質(zhì)上是非常相似的,都是需要封裝橫切關(guān)注點(diǎn),封裝到切面中,然后把橫切關(guān)注點(diǎn)封裝為一個(gè)方法,再把該方法設(shè)置為當(dāng)前的一個(gè)通知,再通過切入點(diǎn)表達(dá)式定位到橫切點(diǎn)就可以了,需要的朋友可以參考下2023-09-09
Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng)
在開發(fā)?Java?項(xiàng)目時(shí),管理和協(xié)調(diào)依賴項(xiàng)的版本號(hào)是一項(xiàng)重要而繁瑣的任務(wù),本文主要介紹了Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Java 反轉(zhuǎn)帶頭結(jié)點(diǎn)的單鏈表并顯示輸出的實(shí)現(xiàn)過程
這篇文章主要介紹了Java 反轉(zhuǎn)帶頭結(jié)點(diǎn)的單鏈表并顯示輸出,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
Java代碼規(guī)范與質(zhì)量檢測(cè)插件SonarLint的使用
本文主要介紹了Java代碼規(guī)范與質(zhì)量檢測(cè)插件SonarLint的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
IntelliJ IDEA 2019.3激活破解的詳細(xì)方法(親測(cè)有效,可激活至 2089&
本教程適用于 JetBrains 全系列產(chǎn)品,包括 Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、CLion、AppCode 等,本教程無需修改 hosts 文件,對(duì)IntelliJ IDEA 2019.3激活破解的詳細(xì)方法的相關(guān)知識(shí)感興趣的朋友一起看看吧2020-09-09

