1. 程式人生 > >jquery-uploadfile的使用(多檔案非同步上傳)

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’ ‘多檔案上傳’ 可以搜到許許多多類似的,那我為什麼還要寫一下呢? 一