官网地址:
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框架结合,以实现异步图片上传的功能。这种技术在现代Web应用中非常常见,它提升了用户体验,允许用户在不刷新整个页面的情况下上传文件,特别是...
综上所述,jQuery插件AjaxFileUpload提供了一种便捷的文件异步上传解决方案,通过合理的配置和适当的服务器端处理,可以构建高效、友好的文件上传功能。在实际应用中,可以根据需求进行定制和扩展,提升用户体验。
*** MVC与JQuery插件ajaxFileUpload结合使用进行文件上传是现代Web开发中一个非常常见的功能。本文主要阐述了如何在*** MVC框架中利用JQuery的ajaxFileUpload插件来实现异步文件上传功能。 首先,ajaxFileUpload是...
为了实现基于AJAX的文件上传功能,本文详细介绍了jQuery插件ajaxfileupload.js的使用方法。该插件允许开发者以异步的方式将文件数据上传至服务器,而无需刷新页面或提交传统表单,从而提升了用户体验。以下是对本文...
而AJAXFileUpload是基于jQuery的一个插件,它允许我们在不刷新整个页面的情况下实现文件上传功能,极大地提升了用户体验。 在"struts2下利用jquery、ajaxfileupload实现无刷新上传文件"这个主题中,我们将探讨如何...
AjaxFileUpload是jQuery的一个插件,专门用于实现异步文件上传。它利用Ajax技术实现了在不刷新页面的情况下上传文件,提高了用户体验。这个插件的核心在于它可以监听文件选择事件,然后在后台上传文件,同时可以显示...
接下来,`jquery.ajaxfileupload.js` 是一个基于jQuery的文件上传插件,它扩展了jQuery的Ajax功能,使得在前端可以通过异步方式实现文件上传,提升用户体验。该插件的主要特性包括: 1. 异步上传:使用Ajax技术,...
PHP结合jQuery插件...综上所述,通过PHP与jQuery插件ajaxFileUpload结合实现文件异步上传功能,可以有效提升Web应用的用户体验。开发者需要注意插件的正确使用、兼容性测试以及前后端数据交互的细节处理。
在本文中,我们将深入探讨如何使用jQuery插件AjaxFileUpload来实现异步(Ajax)文件上传功能。AjaxFileUpload是一个非常实用的工具,它允许用户在不刷新整个页面的情况下上传文件,提供更好的用户体验。 首先,要...
1. jQuery及ajaxfileupload.js插件概念: - jQuery是目前最流行的JavaScript库之一,它通过简化HTML文档遍历、事件处理、动画以及Ajax交互,极大地简化了JavaScript编程工作。 - ajaxfileupload.js是一个基于...
**AjaxFileUpload.js** 是一个基于 jQuery 的异步文件上传插件,它允许用户在不刷新页面的情况下上传文件,提供了一种便捷、高效的文件交互体验。这个插件广泛应用于网页应用,尤其是那些需要用户交互频繁上传文件的...
其次,`ajaxfileupload.js`是主要的文件,它是一个专门用于文件上传的插件,基于jQuery构建。这个插件允许用户在不刷新页面的情况下,通过Ajax技术上传图片。异步上传意味着用户可以选择文件后,后台可以开始上传...
`ajaxfileupload.js`是一个专门为jQuery设计的插件,用于处理文件的异步上传。它利用了HTML5的FormData对象和XMLHttpRequest Level 2,使得文件能够在后台无刷新的情况下上传,显著提升了用户体验。在使用`...
在Web开发中,文件上传是一...综上所述,使用jQuery的ajaxfileupload插件可以轻松实现异步文件上传功能,提高Web应用的用户体验。但在实际开发中,我们需要结合服务器端处理和安全措施,确保文件上传功能既高效又安全。
在这个项目中,它是AjaxFileUpload和其他jQuery插件运行的基础。 3. `ajaxfileupload.js`:这就是我们要讨论的AjaxFileUpload插件的源代码。它包含实现异步文件上传的逻辑,包括与服务器的通信、文件选择、上传进度...
jQuery的ajaxFileUpload插件是一种实现异步文件上传功能的工具,它允许用户在不刷新页面的情况下上传文件,提供了一种高效且用户友好的交互体验。以下是对该插件的详细说明: 首先,使用ajaxFileUpload插件的基本...