Uploadify上傳檔案方法,uploadify上傳檔案

來源:互聯網
上載者:User

Uploadify上傳檔案方法,uploadify上傳檔案

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("隊列中的所有檔案上傳完成後觸發。\n"+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 stubresponse.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);}}

您可能感興趣的文章:
  • JQuery.uploadify 上傳檔案外掛程式的使用詳解 for ASP.NET
  • asp.net(c#)開發中的檔案上傳組件uploadify的使用方法(帶進度條)
  • Jquery Uploadify多檔案上傳帶進度條且傳遞自己的參數
  • 詳解jquery uploadify 上傳檔案
  • jquery uploadify和apache Fileupload實現非同步上傳檔案樣本
  • jQuery檔案上傳外掛程式Uploadify使用指南
  • php+jQuery.uploadify實現檔案上傳教程
  • uploadify多檔案上傳參數設定技巧
  • jquery外掛程式uploadify實現帶進度條的檔案批量上傳
  • ASP.NET檔案上傳控制項Uploadify的使用方法
  • ASP.NET多檔案上傳控制項Uploadify的使用方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.