最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

artDialog+plupload實現(xiàn)多文件上傳

 更新時間:2016年07月19日 14:23:29   作者:哎呦不錯啊  
這篇文章主要介紹了artDialog+plupload實現(xiàn)多文件上傳的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

Plupload簡介

Plupload是有TinyMCE的開發(fā)者開發(fā)的,為您的內(nèi)容管理系統(tǒng)或是類似上傳程序提供一個高度可用的上傳插件。Plupload 目前分為一個核心API 和一個jQuery上傳隊列部件,這樣使你可以直接使用或是自己定制。

一、效果展示

包括文件上傳面板以及文件上傳列表

二、介紹

長話短說,采用spring springMVC mybatis maven mysql,實現(xiàn)多文件上傳功能,下載使用的是流的形式。

其中涉及的分頁我會另開一片博客介紹。

三、準(zhǔn)備材料

plupload

artDialog

還有一份初始化插件的js文件

這些可以直接從我的分享連接里面下載

鏈接:http://pan.baidu.com/s/1c27cTAK 密碼:btqj

還有jquery 這個自行下載

四、前臺代碼

引入樣式以及js文件

<link rel="stylesheet" href="resources/css/plupload.css" type="text/css">
<script src="resources/js/jquery.min.js"></script>
<script src="resources/upload/plupload.full.min.js"></script>
<script src="resources/artDialog4.1.7/artDialog.source.js?skin=blue"></script>
<script src="resources/js/upload.js"></script>

js代碼

  _plupload(綁定的uuid,文件上傳路徑);①關(guān)于綁定的uuid,我舉個例子,當(dāng)前用戶的id就是uuid,你可以把用戶id和你上傳的文件相關(guān)聯(lián),以后查詢的話根據(jù)用戶id就能查詢這個用戶上傳的所有文件②這個方法是封裝過的,在upload.js里面能看到,我里面注釋寫的很清楚,也可以參考官方文檔

$(function() {
  3   $('#uploadBtn').click(function() {
   popUpDialog();
  });
  _plupload('test','${pageContext.request.contextPath}/uploadfile');
 });

頁面代碼,一個按鈕,一個彈出框

<a id="uploadBtn" class="optionbtn inline" href="#">文件上傳</a>
 <!-- 觸發(fā)彈出框 -->
 <div id="uploadContent" style="display: none; height: 300px; overflow-x: hidden; overflow-y: auto;">
  <div id="choosefile">
   <span>單個文件支持小于100M</span><br /> <a id="uploadify" href="javascript:void(0);">選擇文件</a>
  </div>
  <div id="uploadfileQueue" style="border: 1px solid #a7c5e2; height: 228px; width: 350px;"></div>
 </div>
 <pre id="console"></pre>

五、后臺代碼

我都沒有封裝成方法,為了看得明白,可以自己封裝一下

/**
  * 文件上傳請求地址
  * 
  * @param request
  * @param response
  */
 @RequestMapping("uploadfile")
 public void upload(HttpServletRequest request, HttpServletResponse response) {
  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;// 二進(jìn)制上傳
  CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");// 獲取文件
  String unid = UUID.randomUUID().toString().replace("-", "");/* 文件主鍵 */
  String originalFilename = file.getOriginalFilename();/* 原文件名,包括后綴 */
  String flieSize = String.valueOf(file.getSize());/* 文件大小 */
  String path = null;/* 文件存儲路徑 */
  String punid = request.getParameter("punid"); /* 關(guān)聯(lián)文件punid */
  // 保存文件
  if (file != null) {
   try {
    String basePath = request.getSession().getServletContext().getRealPath("/uploadfile");
    SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
    String subPath = sdf.format(new Date());
    path = basePath + subPath + unid + File.separator + originalFilename;
    // 如果文件夾不存在,就創(chuàng)建文件夾
    File dir = new File(path);
    if (!dir.exists()) {
     dir.mkdirs();
    }
    file.transferTo(dir);
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  // 文件大小轉(zhuǎn)換
  long kb = 1024;
  long mb = kb * 1024;
  long gb = mb * 1024;
  long size = Long.parseLong(flieSize);
  if (size >= gb) {
   flieSize = String.format("%.1f GB", (float) size / gb);
  } else if (size >= mb) {
   float f = (float) size / mb;
   flieSize = String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);
  } else if (size >= kb) {
   float f = (float) size / kb;
   flieSize = String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);
  } else {
   flieSize = String.format("%d B", size);
  }
  // 存儲文件信息進(jìn)數(shù)據(jù)庫
  FileUpload fileUpload = new FileUpload();
  fileUpload.setUnid(unid);
  fileUpload.setOriginalFilename(originalFilename);
  fileUpload.setFlieSize(flieSize);
  fileUpload.setPath(path);
  fileUpload.setPunid(punid);
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  fileUpload.setFlieTime(df.format(new Date()));
  fileUploadService.insert(fileUpload);
 }

 這里附帶一個下載的方法,是用文件流,根據(jù)文件id來進(jìn)行下載

@RequestMapping("downloadfile")
 public void downLoadfile(HttpServletRequest request, HttpServletResponse response) {
  String unid = request.getParameter("unid");
  FileUpload fileUpload = fileUploadService.selectByPrimaryKey(unid);
  if (fileUpload != null) {
   try {
    String filename = new String(fileUpload.getOriginalFilename().getBytes("GBK"), "ISO-8859-1");
    String path = fileUpload.getPath();
    response.setCharacterEncoding("utf-8");
    response.setContentType("application/octet-stream");
    response.setHeader("Content-Disposition", "attachment;fileName=" + filename);
    response.setHeader("Content-Length", fileUpload.getFlieSize());
     InputStream inputStream = new FileInputStream(new
     File(path));
     OutputStream os = response.getOutputStream();
     byte[] b = new byte[2048];
     int length;
     while ((length = inputStream.read(b)) > 0) {
     os.write(b, 0, length);
     }
     os.close();
     inputStream.close();
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

還有一個刪除方法

/**
  * 文件刪除
  * 
  * @param request
  * @param response
  */
 @ResponseBody
 @RequestMapping("delfile")
 public Map<String, Object> delfile(HttpServletRequest request, HttpServletResponse response) {
  String unid = request.getParameter("unid");
  FileUpload fileUpload = fileUploadService.selectByPrimaryKey(unid);
  // 刪除本地
  boolean flag = false;
  File file = new File(fileUpload.getPath());
  if (file.exists()) {// 路徑為文件且不為空則進(jìn)行刪除
   flag = file.delete();
  }
  // 刪除數(shù)據(jù)庫
  int result = fileUploadService.deleteByPrimaryKey(unid);
  if (result > 0) {
   flag = true;
  }
  Map<String, Object> map = new HashMap<String, Object>();
  map.put("result", flag);
  return map;
 }

以上所述是小編給大家介紹的artDialog+plupload實現(xiàn)多文件上傳,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • web3.js調(diào)用鏈上的方法操作NFT區(qū)塊鏈MetaMask詳解

    web3.js調(diào)用鏈上的方法操作NFT區(qū)塊鏈MetaMask詳解

    這篇文章主要為大家介紹了web3.js調(diào)用鏈上的方法操作NFT區(qū)塊鏈MetaMask詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • layui結(jié)合form,table的全選、反選v1.0示例講解

    layui結(jié)合form,table的全選、反選v1.0示例講解

    今天小編就為大家分享一篇layui結(jié)合form,table的全選、反選v1.0示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • js實現(xiàn)遍歷含有input的table實例

    js實現(xiàn)遍歷含有input的table實例

    這篇文章主要介紹了js實現(xiàn)遍歷含有input的table方法,結(jié)合實例形式分析了jsp讀取數(shù)據(jù)庫動態(tài)生成table及JavaScript遍歷table的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • javascript json2 使用方法

    javascript json2 使用方法

    這是個人在最近使用json時做的總結(jié),拿出來給沒接觸過的小弟們曬曬,適用與沒接觸過json的人員,其中json2。js請到j(luò)son官網(wǎng)下載。
    2010-03-03
  • MvcPager分頁控件 適用于Bootstrap

    MvcPager分頁控件 適用于Bootstrap

    這篇文章主要為大家詳細(xì)介紹了MvcPager分頁控件,修改后適用于Bootstrap,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • js操作cookie保存瀏覽記錄的方法

    js操作cookie保存瀏覽記錄的方法

    這篇文章主要介紹了js操作cookie保存瀏覽記錄的方法,涉及JavaScript使用cookie記錄并保存用戶瀏覽網(wǎng)頁信息的實現(xiàn)技巧,需要的朋友可以參考下
    2015-12-12
  • 深入理解JS繼承和原型鏈的問題

    深入理解JS繼承和原型鏈的問題

    js原型鏈與繼承是js中的重點,原型的實現(xiàn)則是在原型鏈的基礎(chǔ)上,本篇文章深入理解JS繼承和原型鏈的問題,有興趣的同學(xué)可以了解一下。
    2016-12-12
  • JS實現(xiàn)的input選擇圖片本地預(yù)覽功能示例

    JS實現(xiàn)的input選擇圖片本地預(yù)覽功能示例

    這篇文章主要介紹了JS實現(xiàn)的input選擇圖片本地預(yù)覽功能,涉及javascript針對頁面元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • JS?try?catch基本用法以及常見的異常處理

    JS?try?catch基本用法以及常見的異常處理

    JS異常處理的作用是幫助開發(fā)者識別和處理運(yùn)行時的錯誤和異常情況,確保程序在出現(xiàn)問題時能夠優(yōu)雅地降級或恢復(fù),而不是導(dǎo)致整個應(yīng)用崩潰或產(chǎn)生不可預(yù)測的行為,這篇文章主要介紹了JS?try?catch基本用法以及常見的異常處理,需要的朋友可以參考下
    2025-04-04
  • JavaScript性能陷阱小結(jié)(附實例說明)

    JavaScript性能陷阱小結(jié)(附實例說明)

    JavaScript陷阱太多,因此我們得步步為營,下面這些點,相信很多同學(xué)都會遇到,希望朋友們多注意下。JavaScript陷阱太多,因此我們得步步為營,下面是一些常見的影響性能的陷阱。
    2010-12-12

最新評論

龙门县| 甘德县| 松溪县| 砀山县| 苍南县| 枝江市| 汉阴县| 韶关市| 沂水县| 安岳县| 皋兰县| 柘城县| 辉县市| 曲麻莱县| 商洛市| 汝城县| 台湾省| 吴旗县| 莱芜市| 平果县| 兴文县| 六盘水市| 中牟县| 雅安市| 城固县| 彰化市| 瑞丽市| 平罗县| 体育| 宣威市| 北海市| 定边县| 米脂县| 库尔勒市| 永吉县| 九龙坡区| 峨山| 玉屏| 吐鲁番市| 车险| 布拖县|