java上传文件的要点_Uploadify上传文件方法

Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示或下载。

先给大家展示下效果图:

7b5da1dbf36e5b6976ab1b5af683a679.png

修改:

报找不到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

$(function(){

$(function() {

$(function() {

$('#file_upload').uploadify({

'uploader' : '/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

}

服务端

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 fileList = null;

try {

fileList = upload.parseRequest(request);

} catch (FileUploadException ex) {

return;

}

Iterator 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);

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值