gpt4 book ai didi

java - Struts2 Fileupload 在操作类中给出空文件

转载 作者:行者123 更新时间:2023-11-30 03:10:40 26 4
gpt4 key购买 nike

我正在尝试使用 struts2 fileUpload 拦截器在我的 Web 应用程序中实现文件上传过程。下面是我的代码

index.jsp

<tags:form action="fileUpload" method="post" enctype="multipart/form-data">
<tags:file name="fileUpload" label="Choose File"/>
<tags:submit value="Upload"/>
</tags:form>

struts.xml

<action name="fileUpload" class="com.hibernate.action.FileUploadAction">
<interceptor-ref name="fileUploadStack"/>
<interceptor-ref name="fileUpload">
<param name="maximumSize">1024000</param>
<param name="allowedTypes">application/pdf</param>
</interceptor-ref>
<result name="success">/viewChapters.jsp</result>
</action>

FileUploadAction.java

public class FileUploadAction extends ActionSupport
{
private File fileUpload;
private String contentType;
private String fileName;
private String destPath;
/// setter and getter methods
public String execute()
{
destPath="C:\\WebPortal_testing";
try
{
System.out.println("Source File Name:"+fileUpload);
System.out.println("Destination File Name:"+fileName);

File destFile= new File(destPath,fileName);
FileUtils.copyFile(fileUpload, destFile);
}
catch(IOException exception)
{
exception.printStackTrace();
return ERROR;
}
return SUCCESS;
}

当我在index.jsp页面中选择一个pdf文件并单击上传按钮时,它为操作类的fileUpload字段赋予空值。

我正在 Debug模式下执行应用程序并给出了这个

System.out.println("Source File Name:"+fileUpload);

检查它返回的内容,结果为空。

最佳答案

<强>1。拦截器配置错误

FileUploadStack是:

<!-- Sample file upload stack -->
<interceptor-stack name="fileUploadStack">
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>

那么你真正定义的是:

    <interceptor-ref name="fileUpload"/>
<interceptor-ref name="basicStack"/>
<interceptor-ref name="fileUpload">
<param name="maximumSize">1024000</param>
<param name="allowedTypes">application/pdf</param>
</interceptor-ref>

使用

  • 两倍的 fileUpload 拦截器
  • 仅将 maxSize 和 allowedTypes 的限制应用于第二个。

就这么做

<interceptor-ref name="fileUploadStack">
<param name="fileUpload.maximumSize">1024000</param>
<param name="fileUpload.allowedTypes">application/pdf</param>
</interceptor-ref>
<小时/>

<强>2。文件属性错误

内容类型和文件名属性必须以文件属性名称开头。

就您而言:

private File fileUpload;
private String fileUploadContentType;
private String fileUploadFileName;

您可以在this question上找到完整的示例.

<小时/>

<强>3。您正在打印文件而不是文件名

System.out.println("Source File Name:"+fileUpload);

这是文件,而不是文件名,顺便说一句,文件名是在另一个变量中传递的。

<小时/>

修复此问题并重试。另请注意,使用 <tags: 并不安全当全世界都使用 <s: 时作为前缀。这样做没有任何好处,只会带来麻烦。只需使用 <s: .

关于java - Struts2 Fileupload 在操作类中给出空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com