文件已经上传成功,下载的时候,后台也打印出了完整路径,但是new文件的时候,却提示文件找不到。我拿打印的路径跟硬盘的路径比对,一模一样。 这个问题产生的原因是,中文文件名包含空格,不没空格的时候,一切ok。有了空格,就无法下载。上传是ok的。请问大家谁遇到过这个问题?ps:禁止灌水,灌水者一律删除回复。
文件已经上传成功,下载的时候,后台也打印出了完整路径,但是new文件的时候,却提示文件找不到。我拿打印的路径跟硬盘的路径比对,一模一样。 这个问题产生的原因是,中文文件名包含空格,不没空格的时候,一切ok。有了空格,就无法下载。上传是ok的。请问大家谁遇到过这个问题?ps:禁止灌水,灌水者一律删除回复。
上传时候已经重名了,但是
保存在硬盘中的文件只是在前面加了时间戳和模组而已。文件名中的空格依旧是存在的。
如下:
1330679939472_fileUploadInfoModule_Hadoop权威指南 中文版.pdf
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
你說的是一種思路,我現在想要的是,文件存儲在硬盤中的文件名就如上圖那樣。空格依舊在。下載的時候,該如何處理。可以正常下載下來。我前台是用jquery上傳的。
文件流的形式。前台传过来文件名(中文)。在后台去硬盘new file找到,以流下载。