vueでファイルのダウンロードとアップロードを実現(excelファイル)
5480 ワード
1.ファイルのダウンロード
方法1:パラメータなしのダウンロードに適し、限界がある
方法二:汎用方法
2.ファイルアップロード
方法1:パラメータなしのダウンロードに適し、限界がある
vue :
template:
scripte:
exportDoc() {
let me = this;
axios
.post("/api/pageCont/downLoadModel")
.then(function(res) {
// , iframe
let iframe = document.createElement('iframe')
iframe.style.display = 'none'
iframe.src = res.request.responseURL
iframe.onload = function () {
document.body.removeChild(iframe)
}
document.body.appendChild(iframe)
})
.catch(function(response) {
console.log(response);
});
}
java :
//
@RequestMapping(value = "downLoadModel")
public void downLoadModel(HttpServletResponse response){
HSSFWorkbook workbook = pageContService.downLoadModel();
try {
String fileName = new String(" .xls".getBytes("gbk"),"iso-8859-1");
// response
response.reset();
// response Header
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
OutputStream os = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/vnd.ms-excel;charset=utf8");
// excel
workbook.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
方法二:汎用方法
handleExprot() {
let me = this;
let param = {
column:this.checkedmenus,
qianData:this.multipleSelection
};
axios({
//
method:'post',
url:'/api/pageCont/exportEsData',
// blob
responseType:'blob',
data:param
})
.then(function(res) {
let blob = new Blob([res.data], {type: "application/vnd.ms-excel"}); // res
//
let objectUrl = URL.createObjectURL(blob);
window.location.href = objectUrl;
})
.catch(function(response) {
console.log(response);
});
console.log(this.checkedmenus," ",this.multipleSelection)
},
2.ファイルアップロード
vue :
template:
,
Excel , 500kb
script :
// excel
beforeUpload(file) {
if (file.type == "" || file.type == null || file.type == undefined) {
const FileExt = file.name.replace(/.+\./, "").toLowerCase();
if (
FileExt == "xls" ||
FileExt == "xlsx" ||
FileExt == "XLS" ||
FileExt == "XLSX"
) {
return true;
} else {
this.$message.error(" Excel !");
return false;
}
}
return true;
},
upModel(){
this.uploading = false;
this.file = [];
this.uploadDialog = true;
},
//
handleExceed(files, fileList) {
this.$message.warning(` 1 , `);
},
uploadFile(item) {
this.file = item.file;
},
postFile() {
const fileObj = this.file;
var fileData = new FormData();
fileData.append("file", fileObj);
let headers = {
"Content-Type": "multipart/form-data"
};
this.uploading = true;
this.$ajax({
method: "post",
url:"http://localhost:6002/api/pageCont/importDateToEs", //
headers: headers,
data: fileData
}).then(res => {
console.log("res:",res);
if (res == 200) {
this.$message.success(" ");
this.uploadDialog = false;
} else {
this.$message.error(" ! ");
}
});
setTimeout(function() {
this.uploading = false;
}, 1500);
},
colseFile() {
this.uploadDialog = false;
},
}
Java :
// es
@RequestMapping(value = "importDateToEs")
public ReturnType importDateToEs(@RequestParam("file") MultipartFile file){
ReturnType rt = pageContService.importDateToEs(file);
return rt;
}