首先
下载文件:
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 "";
}