1. 程式人生 > >Spring文件下載與上傳 FormData

Spring文件下載與上傳 FormData

thead group fileinput ase ppi index function ctf code

Spring實現文件的上傳與下載

文件上傳可以使用FormData
前端實現代碼:使用表單進行提交

<form class="form-horizontal" method="post" id="uploadFileForm"
enctype="multipart/form-data" onkeydown="if(event.keyCode==13){return false;}">
<div class="form-group">
<label class="col-xs-3 control-label">選擇上傳文件</label>
<div class="col-xs-9">
<div class="input-group file-caption-main">
<div tabindex="500" class="form-control file-caption kv-fileinput-caption">
<div class="file-caption-name"></div>
</div>
<div class="input-group-btn">
<div tabindex="500" class="btn btn-primary btn-file">
<i class="glyphicon glyphicon-folder-open"></i>
<span class="hidden-xs">瀏覽 …</span>
<input class="form-control projectfile" type="file">
</div>
</div>
</div>
</div>
</div>
<input type="hidden" name="containerName" id="containerName" value="${containerName!}">
<input type="hidden" name="namespace" id="namespace" value="${namespace!}">
</form>



js部分代碼(使用ajax進行文件的上傳)
$.ajax({
url : ‘‘,
dataType : ‘json‘,
data : form,
type : ‘POST‘,
processData : false, // 告訴jQuery不要去處理發送的數據
contentType : false,
success : function(result){
。。。。。。。。。。。。。。

其中的data:
var form = new FormData();
var fileObj = document.getElementById("uploadFileName").files[0];
var fileName = $("#fileName").val();//文件的名字
var containerName = $("#containerName").val();
var namespace = $("#namespace").val();
form.append("file", fileObj);
form.append("fileName", fileName);

後臺接收代碼


/**
* 文件上傳
*
*/
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public ResponseData<String> upload(HttpServletRequest request,
@RequestParam("file") CommonsMultipartFile file, String fileName) {
//可以對file進行一些列的操作,以後的細化可以在service層進行操作
//下面列舉一些常見的操作
file.getOriginalFilename();
file.getName();
file.getBytes();
file.getContentType();
file.getSize();
file.isEmpty()

//文件的保存
String filePath = "D:\\file\temp";
File fileTemp = new File(filePath);
//臨時存放的路徑不存在情況下 創建路徑
if(!fileTemp.exits()) {
fileTemp.mkdirs();
}
file.transferTo(fileTemp);
return data;
}


文件的下載
這裏面可以使用:①<a href="${baseUrl}/file/download"/>
②使用ifream
這裏介紹的使用第二種的方法
<iframe id="iframeForDownload" style="display:none" width="0" height="0"></iframe>

點擊事件之後可以設置:$("#iframeForDownload").src=baseUrl+"/file/download";

後臺代碼

/**
*文件下載
*
*/
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(HttpServletRequest request, HttpServletResponse response, @RequestParam String containerPath,
@RequestParam String uuid) {
File file = new File("E:\\file\\\temp\\name.jpg");
OutputStream out = null;
InputStream in = null;
if (null != file && file.length() > 0) {
try {
String fileName = URLEncoder.encode("name.jpg", "UTF-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addDateHeader("Expries", 0);
in = new FileInputStream(file);
out = response.getOutputStream();
StreamUtils.copy(in, out);
} catch (Exception e) {
LOGGER.error("Container file download error:", e);
} finally {
try {
in.close();
out.close();
} catch (Exception e) {
......
}
}
}
}

Spring文件下載與上傳 FormData