87281248 2013-10-12
Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。而且是Ajax的,省去了自己写Ajax上传功能的麻烦。不过官方提供的实例时php版本的,本文将详细介绍Uploadify在J2EE中的使用。
1.引入头文件(注意一定要把jQuery放在前面):
注意:uploader是上传的Action路径名;formData是传递给Action的参数列表。
<script src="lib/jquery-1.8.3.min.js"></script> <script src="lib/uploadify/jquery.uploadify.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { $('#projectfile').uploadify({ 'swf' : 'lib/uploadify/uploadify.swf', 'uploader' : 'ProjectfileAdd.action', 'formData': {'projectid': '${project.id}'}, 'fileObjName' : 'file', 'fileSizeLimit' : '0', 'onQueueComplete' : function(queueData) { alert(queueData.uploadsSuccessful + ' files were successfully uploaded.'); } }); }); </script>
2.需要上传的地方添加一个<form>,里面有一个<input>(注意其id属性):
<form> <input id="projectfile" name="file" type="file" ></input> </form>
3.看一下<input>效果如下,还挺美观的
4.后台的Action就是一个普通的上传文件的Action,示例如下:
package dc.action.projectfile; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Timestamp; import java.util.Date; import java.util.Map; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import dc.bean.Project; import dc.bean.Projectfile; import dc.bean.User; import dc.service.ProjectService; import dc.service.ProjectfileService; public class ProjectfileAdd extends ActionSupport { private static final int FILE_SIZE=16*1024; private int projectid; private ProjectService projectService; private ProjectfileService projectfileService; private File file; private String fileFileName; private String fileContentType; public int getProjectid() { return projectid; } public void setProjectid(int projectid) { this.projectid = projectid; } public ProjectService getProjectService() { return projectService; } public void setProjectService(ProjectService projectService) { this.projectService = projectService; } public ProjectfileService getProjectfileService() { return projectfileService; } public void setProjectfileService(ProjectfileService projectfileService) { this.projectfileService = projectfileService; } 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 getFileContentType() { return fileContentType; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } public static int getFileSize() { return FILE_SIZE; } //写入文件时候用到的函数 public void upLoadFile(File source,File target){ InputStream in=null; OutputStream out=null; try{ in=new BufferedInputStream(new FileInputStream(source),FILE_SIZE); out=new BufferedOutputStream(new FileOutputStream(target),FILE_SIZE); //in-->image-->out byte[] image=new byte[FILE_SIZE]; while(in.read(image)>0){ out.write(image); } }catch(IOException ex){ ex.printStackTrace(); }finally{ try{ in.close(); out.close(); }catch(IOException ex){ ex.printStackTrace(); } } } public String execute() { try { Projectfile projectfile=new Projectfile(); projectfile.setName(fileFileName); Project project=projectService.ReadByID(projectid); projectfile.setProject(project); projectfile.setModifytime( new Timestamp(new Date().getTime())); String filepath="file/"+project.getId()+"/"+fileFileName; projectfile.setFilepath(filepath); projectfile.setFilesize(file.length()); //不是连接到外网的文件 projectfile.setFilelink(0); projectfile.setContenttype(fileContentType); //--记录编辑人------------------ ActionContext context = ActionContext.getContext(); Map sessionMap = context.getSession(); User currentuser=(User)sessionMap.get("user"); projectfile.setUser(currentuser); //------------------------------ //projectfile.setFilesize(1); projectfileService.save(projectfile); //文件上传,存至硬盘 //ServletActionContext.getServletContext().getRealPath获得webRoot绝对路径 String realfilePath=ServletActionContext.getServletContext().getRealPath("file") +"/"+project.getId()+"/"+this.fileFileName; File targetFile=new File(realfilePath); targetFile.getParentFile().mkdirs(); upLoadFile(file,targetFile); } catch (Exception ex) { ex.printStackTrace(); return ERROR; } return SUCCESS; } }
Uploadify官方网站:http://www.uploadify.com/
Uploadify下载:http://download.csdn.net/detail/leixiaohua1020/6376463