jquery-uploadfile的使用(多檔案非同步上傳)
需求
在頁面端可以在頁面不重新整理情況下上傳多個有大小限制的word檔案,並返回檔案儲存的路徑,同時可以刪除誤上傳的檔案。
效果
解決方案
準備
- 下載該外掛
- 該外掛依賴jquery1.9.1版本(其它不清楚)
*在jsp頁面中引入樣式檔案和js檔案
</script><link href="css/uploadfile.css" rel="stylesheet">
<script src="js/jquery1.9.1/jquery.min.js"></script>
<script src="js/jquery.uploadfile.min.js" ></script>
編寫jsp頁面
- 表單
<form id="newsform" method="post" action="control/news/add.action" enctype="multipart/form-data" >
<input type="hidden" name="columnId" value="${columnId }">
<input type="hidden" name="state" id="state" >
<div id="fileuploader" >上傳附件</div>
</form>
- js函式
我是直接寫在了jsp頁面中
<script>
$(document).ready(function() {
$("#fileuploader").uploadFile({
url:"control/news/upload.action", //後臺處理方法
fileName:"myfile", //檔案的名稱,此處是變數名稱,不是檔案的原名稱只是後臺接收的引數
dragDrop:true, //可以取消
abortStr:"取消" ,
sequential:true, //按順序上傳
sequentialCount:1, //按順序上傳
autoSubmit :"false", //取消自動上傳
acceptFiles:"application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword" , //限制上傳檔案格式
extErrorStr:"上傳檔案格式不對",
maxFileCount:10, //上傳檔案數量
maxFileSize:1024*1024, //大小限制1M
sizeErrorStr:"上傳檔案不能大於1M",
dragDropStr: "<span><b>附件拖放於此</b></span>",
showFileCounter:false,
returnType:"json", //返回資料格式為json
onSuccess:function(files,data,xhr,pd) //上傳成功事件,data為後臺返回資料
{
//將返回的上傳檔案id動態加入的表單中,用於提交表單時返回給後臺。
var newsform = $("#newsform");
if( data.status==1){
for( var i=0;i<data.data.length;i++){
var inputNode='<input type="hidden" id="'+data.data[i].fileId+'" name="fileIds" value="'+data.data[i].fileId+'" >';
newsform.append(inputNode);
}
}else{
alert("上傳失敗");
}
},
showDelete: true,//刪除按鈕
statusBarWidth:600,
dragdropWidth:600,
//刪除按鈕執行的方法
deleteCallback: function (data, pd) {
var fileId=data.data[0].fileId;
$.post("control/news/deleteFile.action", {fileId:fileId},
function (resp,textStatus, jqXHR) {
alert("delete ok");
//alert(textSatus);
});
//刪除input標籤
$("#"+fileId).remove();
pd.statusbar.hide(); //You choice.
}
});
});
</script>
編寫後臺上傳檔案方法
/**
* 上傳新聞附件
* @return
* {
* "status":1,
* "message":"ok",
* "data":[
* {"fileId":"20164225567979423"}
* {"fileId":"20164225567979423"}
* {"fileId":"20164225567979423"}
* ...
* ]
* }
*/
@RequestMapping(value="upload", method=RequestMethod.POST)
public String uploadFile(MultipartHttpServletRequest request,Model model,String name,String testName){
MyStatus status = new MyStatus();
JSONObject json= new JSONObject();
Iterator<String> iterator = request.getFileNames();
//遍歷所有上傳檔案
JSONArray jsonArray = new JSONArray();
while (iterator.hasNext()) {
String fileName = iterator.next();
MultipartFile multipartFile = request.getFile(fileName);
String originName=multipartFile.getOriginalFilename();
//儲存檔案相對路徑:files/
String relativedir= SiteUtils.getRelativeSavePath("news.file");
//儲存檔名稱
String saveFileName = WebUtils.getFileSaveName(originName);
try {
//儲存檔案
BaseForm.saveFile(relativedir, saveFileName, multipartFile);
//構造檔案實體
NewsFile newsFile = new NewsFile();
newsFile.setOriginName(originName);
newsFile.setSaveName(saveFileName);
newsFile.setSavePath(relativedir+saveFileName);
newsFile.setExt(WebUtils.getExtFromFilename(saveFileName));
newsFile.setSize(multipartFile.getSize());
newsFileService.save(newsFile);
//構造json
JSONObject fileJson = new JSONObject();
fileJson.put("fileId", newsFile.getId());
jsonArray.add(fileJson);
} catch (Exception e) {
e.printStackTrace();
status.setStatus(0);
status.setMessage(e.getMessage());
break;
}
}
//返回json資料
json.put("status", status.getStatus());
json.put("message", status.getMessage());
json.put("data", jsonArray);
model.addAttribute("json", json.toString());
return SiteUtils.getPage("json");
}
編寫後臺刪除檔案方法
/**
* 刪除附件記錄
* @param fileId
* @return
*/
@RequestMapping(value="deleteFile")
public String deleteNewsFile(String fileId,Model model){
MyStatus status = new MyStatus();
try {
if( BaseForm.validateStr(fileId)){
newsFileService.delete(fileId);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
status.setStatus(0);
status.setMessage(e.getMessage());
}
JSONObject json = JSONObject.fromObject(status);
model.addAttribute("json", json.toString());
return SiteUtils.getPage("json");
}
相關推薦
jquery-uploadfile的使用(多檔案非同步上傳)
需求 在頁面端可以在頁面不重新整理情況下上傳多個有大小限制的word檔案,並返回檔案儲存的路徑,同時可以刪除誤上傳的檔案。 效果 解決方案 準備 下載該外掛 該外掛依賴jquery1.9.1版本(其它不清楚) *在jsp頁面中引入樣
普通檔案的上傳(表單上傳和ajax檔案非同步上傳)
一.表單上傳: html客戶端部分: <form action="upload.ashx" method="post" enctype="multipart/form-data"> 選擇檔案:<input type="file" name="file1" /><br /
SpringMVC + AJAX 實現多檔案非同步上傳
轉自:https://www.jianshu.com/p/f3987f0f471f 今天,我就這個問題來寫一篇如何用 SpringMVC + AJAX 實現的多檔案非同步上傳功能。基本的程式碼還是沿用上篇文章中所用到的專案,需要的朋友可以點選前面的連結檢視。在這裡只貼出關鍵程式碼。 首先
html5 multiple多檔案非同步上傳 伺服器接收檔案重複
背景 前端採用html5非同步上傳,後端採用Struts1接收檔案。接收到的檔案存在重複的問題。 解決 1.將非同步上傳改為同步上傳,但不推薦這麼改; xhr.open("POST", url,false); 2.採用程式控制方式,在前一個上傳完才開始上傳下一個,產生一個個
springboot+jquery實現檔案非同步上傳——淺談SOA
關於springBoot就不做介紹了,個讓你覺得是個不錯的框架,要學習或者瞭解springBoot,應該對spring的一些基本配置有一定的瞭解,不要一蹴而就。這次的博文主要是介紹 springboot+jquery實現檔案非同步上傳,分一下幾點介紹: 第一、s
關於 PHPMailer 郵件發送類的使用心得(含多文件上傳)
登錄 subst PE 絕對路徑 cde focus test explode 大量 Is this important for send mail PHPMailer 核心文件 class.phpmailer.php class.phpmaileroauth.
uni-app呼叫原生的檔案系統管理器(可選取附件上傳)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="tex
webupload多檔案的上傳
前端頁面: <li class="mui-table-view-cell"> <p>營業執照</p> <div class="liBox"> <div class="img" style="width: 1
jquery運用FormData結合Ajax非同步上傳表單,超實用
首先建立一個formData,其中引數,就是你的form表單,jquery要加0,也可以用document.querySelector("form")得到 var formData = new FormData($("form")[0]); 接著就是非同步上傳了,其中一定要設定兩個值為falese,就是下
springboot中使用js.ajax()方法和multipartfile類實現檔案非同步上傳-springboot(2)
前言 今天忽然發現,之前springmvc中我經常使用的檔案上傳的js包不可用在springboot中不可用了,使用包裡的方法訪問不到後臺上傳檔案介面,只能自己重新實現了。 之前沒有接觸過這塊,世紀專案中也只用到過幾次而已,只好多踩一踩坑 正文 直接先把程式碼列
【前端】利用ajax實現偽檔案非同步上傳下載
利用ajax可以實現很酷的效果,在不重新整理頁面的情況下提交表單、修改資料狀態等等,可是如果表單裡還有input:file可就慘了,ajax不支援檔案的處理啊! ajax是使用了瀏覽器內部的XmlHttpRequest物件來傳輸XML資料的。既然是Xml的資料傳輸,那麼傳輸
HTML5實現多檔案的上傳示例程式碼
程式碼如下:import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.uti
Struts2多檔案的上傳
Struts2Test.java原始碼: package com.test; import java.io.File; import java.io.FileInputStream; import
thinkphp5 ajax圖片檔案非同步上傳
html:<form id="form"> <input type="file" name="image"> </form>這裡依然需要form標籤包裹,雖然並不用它來提交。如果非要去掉form,就只能用原生的XMLHttpRequ
SSH框架,zyupload外掛檔案非同步上傳
public String uploadFile(String firstPath, String prePath, MultipartFile[] file) throws IOException { String finalPath = ""; for (int i = 0; i <
Android阿里雲OSS多檔案同步上傳和刪除方案
上個專案中使用的是阿里雲OSS,查閱了官方文件,發現居然沒有多檔案上傳相關說明文件,只有一個單檔案非同步上傳的說明。既沒有多檔案上傳,又沒有同步上傳,刪除檔案亦然,凌亂。想到之前做過的七牛雲開發,決定用java遞迴的方式實現多檔案同步上傳和刪除,遞迴有風險,使用需謹慎哈。
多檔案ajaxfileupload上傳
大體步驟: 1、選擇檔案(可多次選擇) 2、每次選擇檔案之後,將選中的檔案ajaxfileupload上傳到伺服器臨時資料夾,返回檔名稱,預覽展示 3、全域性變數儲存每次上傳的檔名,刪除上傳檔案時需刪除預覽、全域性變數中的檔名和臨時資料夾中的檔案 4、將需要上傳檔名(全域性
多檔案批量上傳
在網站後臺開發中並經常需要和上傳打交道,而單一的上傳方式已經不適合,大量相似型別的檔案批量上傳,那如何做到呢?(1)當然第一步首先得封裝下檔案上傳的基本函式uploadFiles()方法(2)第二步,那就編輯簡單的上傳的表單吧?(3)第三步編寫php doAction3.ph
jQuery+php實現ajax檔案即時上傳
HTML 本示例基於jQuery以及相當出色的jquery.form外掛,所以,先要載入jquery庫和form外掛。 <script type="text/javascript" src="jquery.min.js"></script> <script type="tex
使用ajaxFileupload實現多檔案批量上傳
轉自:http://blog.csdn.net/zhanglu201112/article/details/17039137 開啟google 搜尋 ‘ajaxFileupload’ ‘多檔案上傳’ 可以搜到許許多多類似的,那我為什麼還要寫一下呢? 一