js:
<script type="text/javascript" src="<%=path%>/js/jquery/jquery.uploadify.js?f=<%=System.currentTimeMillis()%>"></script>
<link type="text/css" rel="stylesheet" href="<%=path%>/css/uploadify/uploadify.css" />
<script type="text/javascript">
$(function() {
$('#file_upload').uploadify({
'uploader' : '<%=path%>/upload/FileUpload',
'swf' : 'uploadify.swf',
'auto' : true,
//'requeueErrors' : false,
'fileTypeDesc' : 'apk',
'fileTypeExts' : '*.apk',
'buttonText' : '浏览',
'queueID': 'fileQueue',
'height' : 20,
'width' : 70,
//'removeCompleted':false,
'removeTimeout' : 0.01,
//'queueSizeLimit':1,
//'uploadLimit' : 1,
//'method':'post',
'multi':false,
'onDialogClose' : function(queueData) {
$('#file_upload').uploadify('disable', true);
$('#apkname').hide();
$('#fileQueue').show();
},
'onUploadComplete' : function(file) {
$('#file_upload').uploadify('disable', false);
},
'onUploadSuccess' : function(file, data, response) {
//alert('文件 ' + file.name + ' 上传成功.详细信息: ' + response + ':' + data);
if(response){
$('#apkname').val(file.name);
$('#apkmd5').val(data);
$('#fileQueue').hide();
$('#apkname').show();
$('#apknameERR').hide();
}
},
'onCancel' : function(file) {
$('#apkname').val("");
$('#apkmd5').val("");
$('#fileQueue').hide();
$('#apkname').show();
}
});
});
</script>
body:
<input type="file" name="file_upload" id="file_upload" />
servlet:
package upload;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
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;
import util.FileUtil;
import util.UrlUtil;
import util.Util;
//@SuppressWarnings("serial")
public class FileUpload extends HttpServlet
{
//定义文件上传的路径
public static String uploadPath = Util.getProPath("NEWDATA");
// private String uploadPath = "d://NEWDATA//";
// private String uploadPath = "/home/NEWDATA/";
public static String apkpath = Util.getProPath("APKFILEPATH");
public static String md5 = "";
public static String dbsavePath =Util.getProPath("DBSAVEPATH");
public static String apkname="";
private int maxPostSize = 100*1024*1024;
public FileUpload()
{
super();
}
public void destroy()
{
super.destroy();
}
// @SuppressWarnings("unchecked")
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
{
System.out.println("uploadPath:"+uploadPath);
File tepmfile=new File(uploadPath);
if (!tepmfile.exists()) {
tepmfile.mkdirs();
}
System.out.println("apkpath:"+apkpath);
File apkfile=new File(apkpath);
if (!apkfile.exists()) {
apkfile.mkdirs();
// try {
// Thread.sleep(6*1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
String tempPath = "";
String filename = "";
System.out.println("Access!");
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
// out.print("已连接上!");
//保存文件到服务器中
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxPostSize);
try
{
List fileItems = upload.parseRequest(request);
Iterator iter = fileItems.iterator();
while(iter.hasNext())
{
FileItem item = (FileItem)iter.next();
if(!item.isFormField())
{
filename = item.getName();
System.out.println(filename);
apkname=filename;
try
{
tempPath = uploadPath+filename;
item.write(new File(tempPath));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
// out.print("11111");
InputStream in = null;
in = new FileInputStream(tempPath);
String fileName = tempPath;
String apkmd5 = Util.byteArray2HEXString(FileUtil.md5sum(in));
md5=apkmd5;
String savetoFile = apkpath+apkmd5+".apk";
if(!FileUtil.FileExist(savetoFile)){
System.out.println("以字节为单位读取文件内容,一次读多个字节:");
// 一次读多个字节
byte[] tempbytes = new byte[1024*1024];
int byteread = 0;
int fileSeek = 0;
in = new FileInputStream(fileName);
FileUtil.showAvailableBytes(in);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = in.read(tempbytes)) != -1) {
FileUtil.writeFile(savetoFile, tempbytes, fileSeek,byteread);
fileSeek += tempbytes.length; //读取文件指针
}
if( FileUtil.FileSize(fileName) == FileUtil.FileSize(savetoFile+".tp") ){
FileUtil.FileRename(savetoFile+".tp", savetoFile);
}
}else{
// String apkuploadpath = Util.getProPath("FILE_APK_URL");
// System.out.println("同步文件:"+apkmd5+".apk"+">>>>>>>>>"+apkuploadpath);
// System.out.println("本地路径:"+savetoFile);
// String url = Util.getProPath("FILESERVER")+ "?type=apkmd5&md5=" + apkmd5;
// System.out.println("url:"+url);
// if(!UrlUtil.getHasFile(url)){
// try{
// System.out.println("同步文件:"+filename+">>>>>>>>>"+apkuploadpath);
// FileUtil.updfile( apkuploadpath , savetoFile, apkmd5+".apk");
// System.out.println("同步完毕。。。");
// }catch(Exception e)
// {
//// log.error("",e);
// System.out.println("apk文件同步出错:"+e.getMessage());
// //FileUtil.saveErrFile(Config.GetInstance().getApkurl() , filepath, filename);
// e.printStackTrace();
// }
// }
}
out.print(apkmd5);
}
catch(FileUploadException e)
{
e.printStackTrace();
System.out.println(e.getMessage()+"结束");
} finally{
if(out != null){
out.close();
}
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
processRequest(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
processRequest(request, response);
}
}
web.xml:
<servlet>
<servlet-name>FileUpload</servlet-name>
<servlet-class>upload.FileUpload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUpload</servlet-name>
<url-pattern>/upload/FileUpload</url-pattern>
</servlet-mapping>
相关推荐
HTML5 PHP jquery uploadify上传文件,带进度条,author:吕大豹。仿照uploadify写的,www.codesc.net已做过修正,本例的配置参数均与uploadify官网一致,参照官网的api就可以了,直接把文件夹上传到支持php的服务器...
"uploadify上传文件HTTP ERROR"这个标题指向了一个特定的问题,即用户在尝试使用Uploadify插件进行文件上传时遇到了HTTP错误。Uploadify是一款流行的JavaScript插件,它允许用户通过异步方式上传文件到服务器,提供...
当uploadify上传文件时,会发送多个HTTP请求,每个请求对应一个文件。在doPost方法中,你可以通过Part接口来接收并处理这些文件。例如: ```java protected void doPost(HttpServletRequest request, ...
Struts2和Uploadify是两种在Web开发中用于文件上传的技术。...以上就是关于"Struts2+uploadify上传文件"的知识点详解,希望对你的学习有所帮助。在实际开发中,结合这两个工具可以实现高效、灵活的文件上传功能。
在IT行业中,前端开发经常会遇到文件上传的需求,而"jquery-java-ajax-uploadify上传文件"是一个经典的方法,结合了JavaScript库jQuery、Ajax技术以及Uploadify插件来实现这一功能。在这个过程中,我们将深入探讨...
使用Jquery.uploadify上传文件。 jquery有很多插件,其中也有不少上传文件的插件,像ajaxfileupload.js、uploadify.js,不过网上的例子几乎全是php的,很郁闷,研究了半天,终于把uploadify用jsp版本弄出来了
6. **处理上传结果**:在`onUploadSuccess`事件中,我们可以根据后端返回的数据更新页面,例如显示已上传文件的列表。 至此,我们完成了在MVC4中使用JQuery Dialog和Uploadify进行多文件上传的基本流程。请注意,...
"uploadify上传文件"这个标题意味着我们将讨论如何使用Uploadify插件来实现文件上传功能。Uploadify的主要优点在于它支持批量上传,用户可以选择多个文件同时上传,极大地提高了上传效率。此外,它还提供了实时的...
此外,Uploadify还支持多种自定义设置,例如限制上传文件类型、大小、更改按钮文本等,这为我们提供了高度的灵活性来适应不同的项目需求。 总结来说,Uploadify是一个强大的jQuery文件上传插件,能够帮助开发者实现...
此外,需要确保上传文件的安全性,防止恶意文件上传,例如检查文件扩展名、执行文件内容扫描等。 ### 7. 性能优化 对于大量文件上传,可以考虑使用异步处理、分片上传、多线程等方式提高上传性能。同时,合理配置...
在C#编程环境中,Uploadify是一个非常流行的JavaScript库,它与服务器端的C#代码结合,用于实现用户友好的文件上传功能。这个压缩包“C# uploadify文件上传.zip”很可能是包含了一个完整的示例项目,帮助开发者了解...
uploadify则是一个JavaScript库,它允许用户通过异步方式上传文件,提供友好的用户体验。 首先,我们需要在Grails项目中引入uploadify。这通常涉及到在`build.gradle`或`Config.groovy`文件中添加对应的依赖。对于...
在网页开发中,用户经常需要上传文件,例如图片、文档等。jQuery Uploadify是一款强大的JavaScript插件,它允许用户通过异步方式实现多文件的同时上传,极大地提升了用户体验。这个插件以其易用性、自定义性和高效的...
避免恶意文件上传,如通过检查文件头、限制上传文件类型、使用白名单等方法。 6. **优化性能**:对于大量文件上传,可能需要考虑分批处理,使用异步队列,或者使用多线程上传以提高效率。 总结起来,使用PHP和...
以下是对Uploadify上传文件方法及其在ASP.NET中的使用的详细说明: 1. **Uploadify基本使用** - 首先,你需要在HTML页面中引入jQuery库、jQuery EasyUI(可选,用于美化界面)以及Uploadify的JavaScript和CSS文件...
首先,jQuery uploadify是一款优秀的前端文件上传插件,它允许用户通过Ajax方式异步上传文件,提供了友好的用户体验,如进度条显示、多文件上传等。然而,官方提供的示例主要是基于PHP的,对于Java开发者来说,寻找...
在IT行业中,jQuery Uploadify.js是一款非常流行的前端文件上传插件,它允许用户通过异步方式上传文件到服务器,提供了一种友好的用户体验。然而,随着浏览器版本的更新,一些较旧的插件可能不再兼容新的浏览器,...
Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示,可多文件上传
Java调用uploadify实现文件上传Demo实现,文档参见:http://www.mbaike.net/java/1940.html