Uploadify上傳文件方法
來(lái)源:易賢網(wǎng) 閱讀:1129 次 日期:2016-07-20 15:01:20
溫馨提示:易賢網(wǎng)小編為您整理了“Uploadify上傳文件方法”,方便廣大網(wǎng)友查閱!

Uploadify是JQuery的一個(gè)上傳插件,實(shí)現(xiàn)的效果非常不錯(cuò),帶進(jìn)度顯示。不過(guò)官方提供的實(shí)例時(shí)php版本的,本文將詳細(xì)介紹Uploadify在Aspnet中的使用,您也可以點(diǎn)擊下面的鏈接進(jìn)行演示或下載。

先給大家展示下效果圖:

名單

修改:

報(bào)找不到uploadify-cancel.png文件。找到uploadify.css,找到.uploadify-queue-item .cancel a {,修改文件的路徑。

好多人都說(shuō),在chrome、Firefox上使用uploadify的時(shí)候獲取不到session導(dǎo)致上傳出錯(cuò)。需要手工將session id方法附加參數(shù)中。但是我這里并沒(méi)有這么做,并且在chrome、Firefox上傳沒(méi)問(wèn)題,不知道為什么,也許是因?yàn)槲矣玫淖钚掳娴脑虬伞?/P>

要點(diǎn):

uploadify的js配置已經(jīng)比較全面,在實(shí)際使用的時(shí)候可以適當(dāng)?shù)膭h減一些方法和屬性。

一般情況下的單文件上傳只考慮onSelect、onUploadError和onUploadSuccess即可。

如果是多文件上傳,那么在單文件上傳的基礎(chǔ)上再加上對(duì)整個(gè)隊(duì)列的監(jiān)聽(tīng)onQueueComplete。

開(kāi)始上傳所有文件:$('#file_upload').uploadify('upload', '*');

取消上傳:$('#file_upload').uploadify('cancel', parm);

parm為空:取消上傳第一個(gè)文件。

parm為'*':取消所有的上傳文件。

parm為file id:取消該file id對(duì)應(yīng)的文件。

修改附加的一些變量:$('#file_upload').uploadify("settings","formData",{"name1":"中文name","parm1":"修改后的參數(shù)"});參數(shù)為json,如果該json中的某個(gè)變量已經(jīng)有了,那么覆蓋該屬性,如果沒(méi)有,那么追加該屬性。

服務(wù)端設(shè)置編碼為:upload.setHeaderEncoding("UTF-8");,這樣解析的文件名稱為正常中文。但是解析的附加變量中文亂碼,這里做一次轉(zhuǎn)碼(總感覺(jué)轉(zhuǎn)碼比較low,不知道是哪里配置的不對(duì))。new String(item.getString().getBytes("iso8859-1"),"utf-8")

服務(wù)端最后返回文件保存路徑(這里可以隨便定義返回內(nèi)容)。

步驟:

配置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',//服務(wù)端地址

'swf' : 'uploadify/uploadify/uploadify.swf',

'buttonImage' : 'uploadify/uploadify/img/chooseFile.jpg',//重載按鈕圖片

'buttonClass' : 'some-class',//重載按鈕樣式

'height':19,//按鈕寬度和高度

'width':76,

'queueID' : 'file_queue',//顯示文件隊(duì)列的一個(gè)div,在頁(yè)面定義

'formData' : {'parm1':'參數(shù)1','year':'2016'},//附加參數(shù),可以在upload參數(shù)中更改

'buttonText':'選擇文件',//按鈕顯示文字,如果有圖片的話,會(huì)被圖片擋住

'fileSizeLimit':'1MB',//文件最大

'auto':false,//自動(dòng)提交

'fileTypeExts' : '*.gif; *.jpg; *.png',//文件類型

'fileTypeDesc' : '只能上傳圖片',//選擇文件的時(shí)候的提示信息

'multi' : true,//多選

'queueSizeLimit' : 3,//隊(duì)列中文件的個(gè)數(shù)

'onSelect' : function(file) {

console.log(file);

alert("選擇文件:" + file.name + "\n類型="+file.type+"\n大小="+file.size);

if(file.size>1024000){//文件太大,取消上傳該文件

alert("文件大小超過(guò)限制!");

$('#file_upload').uploadify('cancel',file.id);

}

},

'onUploadSuccess' : function(file, data, response) {

alert('每個(gè)文件上傳成功后觸發(fā) ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);

},

'onUploadComplete' : function(file) {

alert('每個(gè)文件上傳完成,無(wú)論對(duì)錯(cuò)都觸發(fā)! ' + file.name + ' finished processing.');

},

'onUploadError' : function(file, errorCode, errorMsg, errorString) {

alert('上傳出錯(cuò) ' + file.name + ' could not be uploaded: ' + errorString);

},

'onQueueComplete':function(queueData){

alert("隊(duì)列中的所有文件上傳完成后觸發(fā)。\n"+queueData.uploadsSuccessful+'\n'+queueData.uploadsErrored)

},

});

});

});

});

function upload(){

$('#file_upload').uploadify("settings","formData",{"name1":"中文name","parm1":"修改后的參數(shù)"});

$('#file_upload').uploadify('upload', '*');//上傳所有文件

}

function cancel(){

$('#file_upload').uploadify('cancel', '*');//取消所有文件

}

function destroy(){

alert("取消upload上傳,變成原來(lái)樣式!");

$('#file_upload').uploadify('destroy');//destory

}

</script>

<body>

<div class="easyui-panel" title="說(shuō)明" 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()">開(kāi)始上傳</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>

服務(wù)端

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,可以根據(jù)這個(gè)session進(jìn)行一些其他的判斷" + 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;

}

// 擴(kuò)展名格式:

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("表單內(nèi)容:" + 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);

}

}

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:Uploadify上傳文件方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)