JS+Struts2多文件上传实例详解

时间:2021-05-20

本文实例为大家分享了JS Struts2多文件上传的具体代码,供大家参考,具体内容如下

1、JSP页面:

JS控制增加删除多个上传文件框,代码如下:

<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ponent();" /> &nbsp; </td> </tr> </table> </s:form> <table class="pn-ltable" width="100%" cellspacing="1" cellpadding="0" border="0"> <thead class="pn-lthead"> <tr> <th> 序号 </th> <th> 文件名 </th> <th> 上传时间 </th> </tr> </thead> <tbody class="pn-ltbody"> <tr onmouseover="Pn.LTable.lineOver(this);" onmouseout="Pn.LTable.lineOut(this);" onclick="Pn.LTable.lineSelect(this);"> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> </div> </body> </html>

2、Action后台处理上传文件:

//uploadFile对应页面<input type="file" name="uploadFile"> private List<File> uploadFile; //文件名对应uploadFile+“FileName”,要不获取不到文件名 private List<String> uploadFileFileName; // 文件上传 public String mUploadFile() { if (null == uploadFile) { this.addActionError("请上传文件!"); } else { String fileName = ""; try { //在自己代码中控制文件上传的服务器目录 String directory = ServletActionContext.getServletContext().getRealPath("/uploads"); //判断该目录是否存在,不存在则创建 FileUtil.makeDir(directory); //循环处理上传的文件 for(int i=0,j=uploadFile.size();i<j;i++){ fileName = uploadFileFileName.get(i); String filePath = directory + File.separator + fileName; FileUtil.uploadFile(uploadFile.get(i), new File(filePath)); } } catch (IOException e) { this.addActionMessage(""); } this.addActionMessage("文件上传成功!"); } return "fileUpload"; }

FileUtil代码如下:

public class FileUtil { private static final int BUFFER_SIZE = 16 * 1024; public static void uploadFile(File src, File dst) throws IOException { InputStream in = null; OutputStream out = null; try { in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE); out = new BufferedOutputStream(new FileOutputStream(dst), BUFFER_SIZE); byte[] buffer = new byte[BUFFER_SIZE]; while (in.read(buffer) > 0) { out.write(buffer); } } finally { if (null != in) { in.close(); } if (null != out) { out.close(); } } } public static String getExtention(String fileName) { int pos = fileName.lastIndexOf("."); return fileName.substring(pos); } public static void makeDir(String directory) { File dir = new File(directory); if (!dir.isDirectory()) { dir.mkdirs(); } } public static String generateFileName(String fileName) throws UnsupportedEncodingException { DateFormat format = new SimpleDateFormat("yyMMddHHmmss"); String formatDate = format.format(new Date()); String extension = fileName.substring(fileName.lastIndexOf(".")); fileName = new String(fileName.getBytes("iso8859-1"), "gb2312"); return fileName + "_" + formatDate + new Random().nextInt(10000) + extension; } }

扩展:

1.可以实现带进度条的上传与下载;
2.可以用xml文件记录上传的文件清单,并且可以根据页面对上传文件的操作来修改相应的xml文件;

完毕!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章