现在的位置: 首页 > 综合 > 正文

java上传下载

2014年09月05日 ⁄ 综合 ⁄ 共 2754字 ⁄ 字号 评论关闭

首先 

下载文件:

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 "";
	}

抱歉!评论已关闭.