【发布时间】:2014-01-19 08:14:43
【问题描述】:
struts2如何读取上传的文件?
我正在开发一个网络应用程序,当我上传文件时遇到一些问题:我可以上传我需要的文件类型 喜欢:我可以上传和阅读图片,但我上传他时无法阅读其他文件
这是我的 jsp 文件:
<s:form action="fileUpload" method="post" enctype="multipart/form-data">
<s:file name="toBeUploaded" label="Choose file to upload" />
<s:submit value="upload" align="center"/>
</s:form>
动作类:
public class FileUploadAction extends ActionSupport implements ServletRequestAware {
public File toBeUploaded;
public String toBeUploadedFileName;
public String toBeUploadedContentType;
private HttpServletRequest servletRequest;
public String execute() {
String filePath = servletRequest.getSession().getServletContext().getRealPath("/");
System.out.println("Server path:" + filePath);
File fileToCreate = new File(filePath, this.toBeUploadedFileName);
try {
FileUtils.copyFile(this.toBeUploaded, fileToCreate);
FileUtils.copyFile(toBeUploaded, fileToCreate);
} catch (IOException e) {
// TODO Auto-generated catch block
addActionError(e.getMessage());
}
return SUCCESS;
} + getters/setters
<action name="fileUpload" class="com.ged.control.FileUploadAction">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="fileUpload">
<param name="maximumSize">9999999999</param>
<param name="allowedTypes">image/gif,image/jpeg,image/png,application/msword,
application/mspowerpoint,text/doc,text/plain,application/pdf,application/ms-excel,application/xml,application/powerpoint,audio/mpeg3,audio/x-mpeg-3,video/mpeg,video/x-mpeg,audio/wav,application/x-mspowerpoint,application/vnd.ms-excel,video/avi</param>
</interceptor-ref>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">/uploadSucceed.jsp</result>
<result name="input">/fileUpload.jsp</result>
</action>
结果页面:
<article class="module width_full">
<header><h3>Post New section</h3></header>
File Name : <s:property value="toBeUploadedFileName"></s:property>
<br/>
Content type: <s:property value="toBeUploadedContentType" ></s:property>
<br/>
User file :<s:property value="toBeUploaded"></s:property>
<br/>
Uploaded file:
<br/>
<img src="<s:property value="toBeUploadedFileName"/>" ></img>
</article>
【问题讨论】:
-
你不能那样做(使用 s:property)。使用 iframe:stackoverflow.com/a/12974270/1654265 或类似的东西
-
我有新方法如何使用这个属性 public File toBeUploaded 插入上传到数据库中的文件并使用休眠模式;公共字符串 toBeUploadedFileName;公共字符串 toBeUploadedContentType;并更改此路径 servletRequest.getSession().getServletContext().getRealPath("/");通过我自己的路径,如 C:\fileuploaded
-
这对我来说似乎是一个新问题...顺便说一句,我建议您使用 JPA2,并使用休眠作为 JPA 实现,而不是原始休眠...
-
是的,我正在使用 Hibernate 和 JPA,但现在我不知道如何实现:D
标签: java jakarta-ee file-upload struts2