文件已经上传成功,下载的时候,后台也打印出了完整路径,但是new文件的时候,却提示文件找不到。我拿打印的路径跟硬盘的路径比对,一模一样。 这个问题产生的原因是,中文文件名包含空格,不没空格的时候,一切ok。有了空格,就无法下载。上传是ok的。请问大家谁遇到过这个问题?ps:禁止灌水,灌水者一律删除回复。

解决方案 »

  1.   


    上传时候已经重名了,但是
    保存在硬盘中的文件只是在前面加了时间戳和模组而已。文件名中的空格依旧是存在的。
    如下:
    1330679939472_fileUploadInfoModule_Hadoop权威指南  中文版.pdf
      

  2.   

    package com.boyang.oa.action;import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;import org.apache.struts2.ServletActionContext;import com.boyang.oa.common.CommConst;
    /**
     * 文件下载控制层
     * */
    public class DownloadAction { //上传的文件名
    private String filename;
    //新文件名(时间戳)
    private String newFilename;

    public String getFilename() throws UnsupportedEncodingException {
    if(this.filename==null||this.filename.trim().length()==0){
    this.newFilename=this.filename;
    }
    return new String(filename.getBytes("GBK"),"ISO-8859-1");
    } public void setFilename(String filename) {
    this.filename = filename;
    }

    public String getNewFilename() {
    return newFilename;
    } public void setNewFilename(String newFilename) {
    this.newFilename = newFilename;
    } /**
     * 返回输入流
     * */
    public InputStream getInputStream() throws FileNotFoundException{
    String dir = ServletActionContext.getServletContext().getRealPath(CommConst.UPLOAD_PATH);
    File file  = new File(dir,newFilename);
    return new FileInputStream(file);
    }

    public String execute(){
    return "down";
    }

    }这是下载的action
      

  3.   


    你說的是一種思路,我現在想要的是,文件存儲在硬盤中的文件名就如上圖那樣。空格依舊在。下載的時候,該如何處理。可以正常下載下來。我前台是用jquery上傳的。
      

  4.   


    文件流的形式。前台传过来文件名(中文)。在后台去硬盘new file找到,以流下载。