`
空指针异常
  • 浏览: 22586 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Jquery插件ajaxfileupload应用

阅读更多
官网地址:http://www.phpletter.com/Demo/AjaxFileUpload-Demo/

ajaxfileupload重复上传问题:
http://www.cnblogs.com/zerojevery/p/3897294.html

说明:结合struts2
1.JSP.
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link type="text/css" href="ajaxfileupload/ajaxfileupload.css">
<script type="text/javascript" src="jquery/jquery.js"></script>
<script type="text/javascript" src="ajaxfileupload/ajaxfileupload.js"></script>
<script type="text/javascript">
function ajaxFileUpload(obj) {
	if (validateAttache(obj)) {
		$("#loading")
		.ajaxStart(function(){
			$(this).show();
		})
		.ajaxComplete(function(){
			$(this).hide();
		});

		$.ajaxFileUpload({
					url : 'uploadAction!upload.action',// 用于文件上传的服务器端请求地址
					secureuri : false,// 一般设置为false
					fileElementId : 'file',// 文件上传空间的id属性 <input type="file"
					dataType : 'json',// 返回值类型 一般设置为json
					success : function(data, status) // 服务器成功响应处理函数
					{
						alert('success');
					},
					error : function(data, status, e) {// 服务器响应失败处理函数
						alert('failurdde' + data);
					}
				})
		return false;
	}
}

function validateAttache(obj) {
	var file = obj;
	var tmpFileValue = file.value;
	// 校验图片格式
	if (/^.*?\.(rar|zip|apk|udg)$/.test(tmpFileValue.toLowerCase())) {
		return true;
	} else {
		$.messager.alert('提示', '只能上传rar、zip、udg或apk格式的附件!', 'error');
		return false;
	}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<input type="text" id="fileUploadTextId" name="fileUploadTextName" readonly /> 
	<a href="javascript:void(0)" onclick="file.click();">浏览...</a> 
	<input type="file" id="file" onchange="return ajaxFileUpload(this);" name="file" style="display: none"/>
	<img id="loading" src="ajaxfileupload/loading.gif" style="display:none;">
</body>
</html>


2.Action
package com.utstar.action;

import java.io.File;
import java.io.IOException;

import org.apache.struts2.convention.annotation.Action;

@Action(value = "uploadAction")
public class UploadAction {

	private static final UploadConfig config = UploadConfig.getInstance();

	private File file;
	private String fileFileName;
	private String fileFileContentType;

	public void upload() {
		try {
			// 文件保存路径
			String targetDirVal = config.getFilePath();
			if (!targetDirVal.endsWith("/")) {
				targetDirVal += "/";
			}

			File targetDir = new File(targetDirVal);
			if (!targetDir.exists()) {
				targetDir.mkdirs();
			}

			File targetFile = new File(targetDirVal + fileFileName);
			if (!targetFile.exists()) {

				targetFile.createNewFile();

			}
			FileUtil.copyFile(this.file, targetFile);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//return "success";
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}

	public String getFileFileName() {
		return fileFileName;
	}

	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}

	public String getFileFileContentType() {
		return fileFileContentType;
	}

	public void setFileFileContentType(String fileFileContentType) {
		this.fileFileContentType = fileFileContentType;
	}
}


UploadConfig.java
package com.utstar.action;

import java.util.Properties;

/**
 *
 */
public class UploadConfig {
	private volatile static UploadConfig singleton;
	private static final String FILENAME = "attachment.properties";
	private Properties props = null;
	
	//upload to linux
	private String filePath = "/attachments";
	
	private UploadConfig() {
		props = new Properties();
		try {
			this.props.load(this.getClass().getClassLoader()
					.getResourceAsStream(FILENAME));
			
			this.filePath = props.getProperty("ABSOLUTE_SERVER_UPLOAD_FILE_PATH");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static UploadConfig getInstance() {
		if (singleton == null) {
			synchronized (UploadConfig.class) {
				if (singleton == null) {
					singleton = new UploadConfig();
				}
			}
		}
		return singleton;
	}

	public String getFilePath() {
		return filePath;
	}

	public void setFilePath(String filePath) {
		this.filePath = filePath;
	}
}


FileUtil
package com.utstar.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 文件操作工具
 *
 */
public class FileUtil {
	// 复制文件
	public static void copyFile(File sourceFile, File targetFile)
			throws IOException {
		BufferedInputStream inBuff = null;
		BufferedOutputStream outBuff = null;
		try {
			// 新建文件输入流并对它进行缓冲
			inBuff = new BufferedInputStream(new FileInputStream(sourceFile));

			// 新建文件输出流并对它进行缓冲
			outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));

			// 缓冲数组
			byte[] b = new byte[1024 * 5];
			int len;
			while ((len = inBuff.read(b)) != -1) {
				outBuff.write(b, 0, len);
			}
			// 刷新此缓冲的输出流
			outBuff.flush();
		} finally {
			// 关闭流
			if (inBuff != null)
				inBuff.close();
			if (outBuff != null)
				outBuff.close();
		}
	}

	/**
	 * 
	 * @param filepath
	 * @throws IOException
	 */
	public static void del(String filepath) throws IOException {
		File f = new File(filepath);// 定义文件路径
		if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
			if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除
				f.delete();
			} else {// 若有则把文件放进数组,并判断是否有下级目录
				File delFile[] = f.listFiles();
				int i = f.listFiles().length;
				for (int j = 0; j < i; j++) {
					if (delFile[j].isDirectory()) {
						del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
					}
					delFile[j].delete();// 删除文件
				}
			}
		}
	}
}
分享到:
评论

相关推荐

    jquery 插件ajaxfileupload与struts2结合 实现异步上传图片

    在本文中,我们将深入探讨如何将jQuery插件AjaxFileUpload与Struts2框架结合,以实现异步图片上传的功能。这种技术在现代Web应用中非常常见,它提升了用户体验,允许用户在不刷新整个页面的情况下上传文件,特别是...

    jquery.ajaxFileUpload

    综上所述,jQuery插件AjaxFileUpload提供了一种便捷的文件异步上传解决方案,通过合理的配置和适当的服务器端处理,可以构建高效、友好的文件上传功能。在实际应用中,可以根据需求进行定制和扩展,提升用户体验。

    Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件

    *** MVC与JQuery插件ajaxFileUpload结合使用进行文件上传是现代Web开发中一个非常常见的功能。本文主要阐述了如何在*** MVC框架中利用JQuery的ajaxFileUpload插件来实现异步文件上传功能。 首先,ajaxFileUpload是...

    一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子

    为了实现基于AJAX的文件上传功能,本文详细介绍了jQuery插件ajaxfileupload.js的使用方法。该插件允许开发者以异步的方式将文件数据上传至服务器,而无需刷新页面或提交传统表单,从而提升了用户体验。以下是对本文...

    struts2下利用jquery、ajaxfileupload实现无刷新上传文件

    而AJAXFileUpload是基于jQuery的一个插件,它允许我们在不刷新整个页面的情况下实现文件上传功能,极大地提升了用户体验。 在"struts2下利用jquery、ajaxfileupload实现无刷新上传文件"这个主题中,我们将探讨如何...

    jquery+ajaxfileupload+html文件上传

    AjaxFileUpload是jQuery的一个插件,专门用于实现异步文件上传。它利用Ajax技术实现了在不刷新页面的情况下上传文件,提高了用户体验。这个插件的核心在于它可以监听文件选择事件,然后在后台上传文件,同时可以显示...

    上传文件 commons-fileupload-1.1.jar jquery.ajaxfileupload.js 以及demo

    接下来,`jquery.ajaxfileupload.js` 是一个基于jQuery的文件上传插件,它扩展了jQuery的Ajax功能,使得在前端可以通过异步方式实现文件上传,提升用户体验。该插件的主要特性包括: 1. 异步上传:使用Ajax技术,...

    PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例

    PHP结合jQuery插件...综上所述,通过PHP与jQuery插件ajaxFileUpload结合实现文件异步上传功能,可以有效提升Web应用的用户体验。开发者需要注意插件的正确使用、兼容性测试以及前后端数据交互的细节处理。

    jQuery插件AjaxFileUpload实现ajax文件上传

    在本文中,我们将深入探讨如何使用jQuery插件AjaxFileUpload来实现异步(Ajax)文件上传功能。AjaxFileUpload是一个非常实用的工具,它允许用户在不刷新整个页面的情况下上传文件,提供更好的用户体验。 首先,要...

    JQuery插件ajaxfileupload.js异步上传文件实例

    1. jQuery及ajaxfileupload.js插件概念: - jQuery是目前最流行的JavaScript库之一,它通过简化HTML文档遍历、事件处理、动画以及Ajax交互,极大地简化了JavaScript编程工作。 - ajaxfileupload.js是一个基于...

    ajaxfileupload.js 异步上传jquery插件

    **AjaxFileUpload.js** 是一个基于 jQuery 的异步文件上传插件,它允许用户在不刷新页面的情况下上传文件,提供了一种便捷、高效的文件交互体验。这个插件广泛应用于网页应用,尤其是那些需要用户交互频繁上传文件的...

    方便自己下载的ajaxfileupload.js备份

    其次,`ajaxfileupload.js`是主要的文件,它是一个专门用于文件上传的插件,基于jQuery构建。这个插件允许用户在不刷新页面的情况下,通过Ajax技术上传图片。异步上传意味着用户可以选择文件后,后台可以开始上传...

    基于jquery , ajaxfileupload.js的封装之后的控件自动上传控件

    `ajaxfileupload.js`是一个专门为jQuery设计的插件,用于处理文件的异步上传。它利用了HTML5的FormData对象和XMLHttpRequest Level 2,使得文件能够在后台无刷新的情况下上传,显著提升了用户体验。在使用`...

    WEB文件上传之JQuery ajaxfileupload插件使用(二)

    在Web开发中,文件上传是一...综上所述,使用jQuery的ajaxfileupload插件可以轻松实现异步文件上传功能,提高Web应用的用户体验。但在实际开发中,我们需要结合服务器端处理和安全措施,确保文件上传功能既高效又安全。

    ajaxfileupload and jquery 1.7.2

    在这个项目中,它是AjaxFileUpload和其他jQuery插件运行的基础。 3. `ajaxfileupload.js`:这就是我们要讨论的AjaxFileUpload插件的源代码。它包含实现异步文件上传的逻辑,包括与服务器的通信、文件选择、上传进度...

    jQuery异步上传文件插件ajaxFileUpload详细介绍

    jQuery的ajaxFileUpload插件是一种实现异步文件上传功能的工具,它允许用户在不刷新页面的情况下上传文件,提供了一种高效且用户友好的交互体验。以下是对该插件的详细说明: 首先,使用ajaxFileUpload插件的基本...

Global site tag (gtag.js) - Google Analytics