Uploadify是JQuery的一個上傳插件,實現的效果非常不錯,帶有進度顯示。不過官方提供的實例時php版本的,本文將詳細介紹Uploadify在Aspnet的使用,您也可以點擊下面的連結進行示範或下載。
先給大家展示下效果圖:
修改:
報找不到uploadify-cancel.png檔。找到uploadify.css,找到.uploadify-queue-item .cancel a {,修改檔案的路徑。
好多人都說,在chrome、Firefox上使用uploadify的時候取得不到session導致上傳出錯。需要手動將session id方法附加參數中。但我這裡並沒有這麼做,而且在chrome、Firefox上傳沒問題,不知道為什麼,也許是因為我用的最新版的原因吧。
重點:
uploadify的js配置已經比較全面,在實際使用的時候可以適當的刪減一些方法和屬性。
一般情況下的單一檔案上傳只考慮onSelect、onUploadError和onUploadSuccess即可。
如果是多檔案上傳,那麼在單一檔案上傳的基礎上再加上對整個佇列的監聽onQueueComplete。
開始上傳所有檔案:$('#file_upload').uploadify('upload', '*');
取消上傳:$('#file_upload').uploadify('cancel', parm);
parm為空:取消上傳第一個檔案。
parm為'*':取消所有的上傳檔案。
parm為file id:取消該file id對應的檔案。
修改附加的一些變數:$('#file_upload').uploadify("settings","formData",{"name1":"中文name","parm1":"修改後的參數"});參數為json,如果該json中的某個變數已經有了,那麼覆寫該屬性,如果沒有,那麼追加該屬性。
服務端設定編碼為:upload.setHeaderEncoding("UTF-8");,這樣解析的檔案名稱為正常中文。但是解析的附加變數中文亂碼,這裡做一次轉碼(總感覺轉碼比較low,不知道是哪裡配置的不對)。 new String(item.getString().getBytes("iso8859-1"),"utf-8")
服務端最後回到檔案保存路徑(這裡可以隨便定義回傳內容)。
步驟:
設定uploadify
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%String path = request.getContextPath();%> <%String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <base href="<%=basePath %>"> <title></title> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/icon.css"> <script type="text/javascript" src="jquery-easyui-1.4.3/jquery.min.js"></script> <script type="text/javascript" src="jquery-easyui-1.4.3/jquery.easyui.min.js"></script> <script type="text/javascript" src="uploadify/uploadify/jquery.uploadify.min.js"></script> <link rel="stylesheet" type="text/css" href="uploadify/uploadify/uploadify.css" /> </head> <script> $(function(){ $(function() { $(function() { $('#file_upload').uploadify({ 'uploader' : '<%=basePath%>/UploadServlet',//服务端地址 'swf' : 'uploadify/uploadify/uploadify.swf', 'buttonImage' : 'uploadify/uploadify/img/chooseFile.jpg',//重载按钮图片 'buttonClass' : 'some-class',//重载按钮样式 'height':19,//按钮宽度和高度 'width':76, 'queueID' : 'file_queue',//显示文件队列的一个div,在页面定义 'formData' : {'parm1':'参数1','year':'2016'},//附加参数,可以在upload参数中更改 'buttonText':'选择文件',//按钮显示文字,如果有图片的话,会被图片挡住 'fileSizeLimit':'1MB',//文件最大 'auto':false,//自动提交 'fileTypeExts' : '*.gif; *.jpg; *.png',//文件类型 'fileTypeDesc' : '只能上传图片',//选择文件的时候的提示信息 'multi' : true,//多选 'queueSizeLimit' : 3,//队列中文件的个数 'onSelect' : function(file) { console.log(file); alert("选择文件:" + file.name + "\n类型="+file.type+"\n大小="+file.size); if(file.size>1024000){//文件太大,取消上传该文件 alert("文件大小超过限制!"); $('#file_upload').uploadify('cancel',file.id); } }, 'onUploadSuccess' : function(file, data, response) { alert('每个文件上传成功后触发 ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data); }, 'onUploadComplete' : function(file) { alert('每个文件上传完成,无论对错都触发! ' + file.name + ' finished processing.'); }, 'onUploadError' : function(file, errorCode, errorMsg, errorString) { alert('上传出错 ' + file.name + ' could not be uploaded: ' + errorString); }, 'onQueueComplete':function(queueData){ alert("队列中的所有文件上传完成后触发。 "+queueData.uploadsSuccessful+'\n'+queueData.uploadsErrored) }, }); }); }); }); function upload(){ $('#file_upload').uploadify("settings","formData",{"name1":"中文name","parm1":"修改后的参数"}); $('#file_upload').uploadify('upload', '*');//上传所有文件 } function cancel(){ $('#file_upload').uploadify('cancel', '*');//取消所有文件 } function destroy(){ alert("取消upload上传,变成原来样式!"); $('#file_upload').uploadify('destroy');//destory } </script> <body> <div class="easyui-panel" title="说明" style="margin-bottom:15px"> </div> <div class="easyui-panel" style="text-align:center;margin-bottom:15px"> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="upload()">开始上传</a> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="cancel()">取消上传</a> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="destroy()">destroy</a> <input type="file" name="file_upload" id="file_upload" /> <div id="file_queue" style="width:400px;height:10px;position:absolute;z-index:999"></div> </div> </body> </html>
服務端
package com.servlet; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * Servlet implementation class UploadServlet */ @WebServlet(name="UploadServlet",urlPatterns="/UploadServlet") public class UploadServlet extends HttpServlet { private static final long serialVersionUID = -6483558339095298703L; /** * @see HttpServlet#HttpServlet() */ public UploadServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("获取session,可以根据这个session进行一些其他的判断" + request.getSession().getId()); SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String remotePath = File.separator + "download" + File.separator + sdf.format(new Date()) + File.separator; String savePath = remotePath; File dfile = new File(savePath); if (!dfile.exists()) { dfile.mkdirs(); } DiskFileItemFactory fac = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(fac); upload.setHeaderEncoding("UTF-8"); List<FileItem> fileList = null; try { fileList = upload.parseRequest(request); } catch (FileUploadException ex) { return; } Iterator<FileItem> it = fileList.iterator(); String name = ""; String extName = ""; while (it.hasNext()) { FileItem item = it.next(); if (!item.isFormField()) { name = item.getName(); long size = item.getSize(); String type = item.getContentType(); System.out.println("文件=" + name + " " + size + " " + type); if (name == null || name.trim().equals("")) { continue; } // 扩展名格式: if (name.lastIndexOf(".") >= 0) { extName = name.substring(name.lastIndexOf(".")); } File file = null; do { // 生成文件名: name = UUID.randomUUID().toString(); file = new File(savePath + name + extName); } while (file.exists()); File saveFile = new File(savePath + name + extName); try { item.write(saveFile); } catch (Exception e) { e.printStackTrace(); } }else if(item.isFormField()){ System.out.println("表单内容:" + item.getFieldName() + "=" + new String(item.getString().getBytes("iso8859-1"),"utf-8")); } } String requestPath = remotePath + name + extName; request.getSession().setAttribute(requestPath, requestPath); response.getWriter().write(savePath + name + extName); } }

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

本教程向您展示瞭如何將自定義的Google搜索API集成到您的博客或網站中,提供了比標準WordPress主題搜索功能更精緻的搜索體驗。 令人驚訝的是簡單!您將能夠將搜索限制為Y

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

本文系列在2017年中期進行了最新信息和新示例。 在此JSON示例中,我們將研究如何使用JSON格式將簡單值存儲在文件中。 使用鍵值對符號,我們可以存儲任何類型的

利用輕鬆的網頁佈局:8 ESTISSEL插件jQuery大大簡化了網頁佈局。 本文重點介紹了簡化該過程的八個功能強大的JQuery插件,對於手動網站創建特別有用

核心要點 JavaScript 中的 this 通常指代“擁有”該方法的對象,但具體取決於函數的調用方式。 沒有當前對象時,this 指代全局對象。在 Web 瀏覽器中,它由 window 表示。 調用函數時,this 保持全局對象;但調用對象構造函數或其任何方法時,this 指代對象的實例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。這些方法使用給定的 this 值和參數調用函數。 JavaScript 是一門優秀的編程語言。幾年前,這句話可

jQuery是一個很棒的JavaScript框架。但是,與任何圖書館一樣,有時有必要在引擎蓋下發現發生了什麼。也許是因為您正在追踪一個錯誤,或者只是對jQuery如何實現特定UI感到好奇

該帖子編寫了有用的作弊表,參考指南,快速食譜以及用於Android,BlackBerry和iPhone應用程序開發的代碼片段。 沒有開發人員應該沒有他們! 觸摸手勢參考指南(PDF)是Desig的寶貴資源


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版