下載 中文名稱的文件 struts報錯
<a?href="download.action?filename=123圖片.jpg">文件下載</a> <action?name="download"?class="com.pactera.action.FileDownloadAction"> <!--? <param?name="inputPath">/</param>?--> <result?name="success"?type="stream"> <param?name="contentType">application/octet-stream</param> <param?name="inputName">inputStream</param> <param?name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param?name="bufferSize">8192</param> </result> </action>
String filename;
public String getDownloadFileName() {
String downloadFileName = "";
try {
downloadFileName = URLEncoder.encode(filename,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return downloadFileName;
}
public InputStream getInputStream() throws IOException{
String path = ServletActionContext.getServletContext().getRealPath("/images");
String filePath = path + "\\" + filename;
File file = new File(filePath);
return FileUtils.openInputStream(file);
//return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
}
2016-01-28
你要看他是在獲取文件信息是報的錯誤,應該是在jsp中少了要下載文件的信息
2015-08-04
如果你下載文件時從頁面獲取文件的名稱,如果文件名有中文的話,報
后臺控制臺可以看到java.io.FileNotFoundException異常:
那么你在action中處理文件名稱的時候需要對其進行轉碼,將中文文件名轉碼成能識別的文件名
這樣解決了下載中文文件名報錯的問題。前面的回答可用在文件固定的下載上,這個可以用在文件名不固定的下載上。
2015-08-03
出現
異常時,通常:
1,文件路徑不對,根本就沒獲取到文件,可以將獲得的InputStream打印,如果為null,則檢查文件路徑;
2,在action中沒有寫配置文件中"<param name="inputName">"后面屬性的那個get方法.
3,以上均無問題,那就是使用
獲取流的時候,保證文件位置在 ServletContext 當中,就是說要在當前的應用上下文中,如果是從外部引入文件,比如:C:/Users/Administrator/Pictures/360截圖20150601210855523.jpg ,要手動建一個流
以上應該能解決你的問題。
2015-05-17
也是這個問題
2015-04-12
Struts Problem Report
Struts has detected an unhandled exception:
Messages: ? ?
Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the
tag specified for this action.
? ?
File: ? ?org/apache/struts2/dispatcher/StreamResult.java ? ?
Line number: ? ?237 ? ?
Stacktraces
java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check thetag specified for this action. ? ?
? ?org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:237)
? ?org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
? ?com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)
? ?com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
? ?com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
? ?org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
? ?com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
? ?com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
? ?com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
? ?com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
? ?org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)