首先
下载文件:
struts.xml配置
<package name="default" extends="struts-default"> <action name="download" class="cn.fulong.consult.web.action.adminde.DownloadAction"> <result type="stream"> <param name="contentType">application/octet-stream</param> <param name="inputName">inputStream</param> <!--这里代表了 在这个action里面会走的一个方法 getInputStream--> <param name="contentDisposition">attachment;filePath="${filePath}";fileName="${fileName}"</param><!--这里是传过去的name和路径,根据需要传递--> <param name="bufferSize">10240</param> </result> </action> </package>
然后是下载的action:
public class DownloadAction { private String fileName; private String filePath; public String getFilePath() {//文件最后返回到页面 会出现下载的名字,这个名字就是这里的 getFilePath,我这边是规定了 fileName所以 return的是fileName//根据需要自己选择返回的值 return fileName; } public void setFilePath(String filePath) { this.filePath = filePath; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public InputStream getInputStream() throws Exception { System.out.println(fileName); fileName= new String(fileName.getBytes(), "ISO-8859-1"); FileInputStream out = new FileInputStream(filePath); return out; } public String execute(){ return "success"; } }
文件上传的代码:
利用struts的 copyFile
前台
后台
private File files; private String filesFileName; private String filesContentType ; public File getFiles() { return files; } public void setFiles(File files) { this.files = files; } public String getFilesFileName() { return filesFileName; } public void setFilesFileName(String filesFileName) { this.filesFileName = filesFileName; } public String getFilesContentType() { return filesContentType; } public void setFilesContentType(String filesContentType) { this.filesContentType = filesContentType; } private String loadFile(){ /**当前时间戳**/ long time = System.currentTimeMillis(); ServletContext servletContext = ServletActionContext.getServletContext(); /**获取路径**/ String dataDir = servletContext.getRealPath(""); /**分隔符**/ String separator = java.io.File.separator; /**判断上传文件是否为空**/ if(null == files){ /**若文件为空返回""**/ return ""; }else{ // 判断数据是否正确 // 文件后缀名 int index = StringUtils.lastIndexOf(filesFileName, '.'); if (index == -1) { return "文件类型错误!"; } /**获取文件后缀名**/ String extFileName = StringUtils.substring(filesFileName, index + 1); String forbitName = "exe-bat-sql-js-html-jsp-asp"; String[] forbitNames = forbitName.split("-"); for(int i= 0 ;i<forbitNames.length ; i++){ if(extFileName.equalsIgnoreCase(forbitNames[i])){ return "请上传正确的附件,附件不能类型不能为"+forbitNames[i]; } } /**定义上传位置**/ String path = dataDir+separator+"consultUpload" +separator+"file"+separator; System.out.println("---文件上传位置---"+path); /**使用当前时间戳,避免文件重复被覆盖**/ String name = time+""; String filename = path + name + "." + extFileName.toLowerCase();; System.out.println("---文件名称---"+name); File destFile = new File(filename); try { /**上传文件**/ FileUtils.copyFile(files, destFile); } catch (IOException e) { e.printStackTrace(); return "附件上传失败!"; } msginfo.setPath(filename); msginfo.setFilename(filesFileName); } return ""; }