weixin_42302490 2009-03-26 02:29
浏览 262
已采纳

struts2多文件上传的异常

各位大侠,我在按照 http://www.techrss.cn/html/2009/02-05/206680.htm 的示例做多文件上传个过程中,出现了类构造异常的错误:

[code="java"]
importjava.io.*;
import com.opensymphony.xwork2.ActionSupport;
public class UploadMoreAction extends ActionSupport
{
private java.util.List<File>uploads;
private java.util.List<String>fileNames;
private java.util.List<String>uploadContentTypes;
public java.util.List<String>getUploadFileName()
{
returnfileNames;
}
public voidsetUploadFileName(java.util.List<String>fileNames)
{
this.fileNames=fileNames;
}
public java.util.List<File>getUpload()
{
returnuploads;
}
public void setUpload(java.util.List<File>uploads)
{
this.uploads=uploads;
}
public void setUploadContentType(java.util.List<String>contentTypes)
{
this.uploadContentTypes=contentTypes;
}
public java.util.List<String>getUploadContentType()
{
returnthis.uploadContentTypes;
}

public String execute()throwsException
{
if(uploads!=null)
{
inti=0;
for(;i<uploads.size();i++)
{
java.io.InputStreamis=newjava.io.FileInputStream(uploads.get(i));
java.io.OutputStreamos=newjava.io.FileOutputStream("d:upload"+fileNames.get(i));
bytebuffer=newbyte[8192];
intcount=0;
while((count=is.read(buffer))>0)
{
os.write(buffer,0,count);
}
os.close();
is.close();
}
}
returnSUCCESS;
}
}
[/code]

在执行下面这句:
[code="java"]
java.io.InputStreamis=newjava.io.FileInputStream(uploads.get(i));
[/code]
出现了下面的异常:
java.lang.ClassCastException: java.lang.String

我debug时发现,uploads类型变成了 XWorkList 类型,而不是前面的 File 类型。这个 list 里存储有上传的多个文件的本地路径,如:d:\My Documents\My Pictures\3.jpg,d:\My Documents\My Pictures\4.jpg, 但就是到这儿出错了。

不知道各位大侠有没有碰到相类似的问题?望指点,多谢了。
[b]问题补充:[/b]
上面的 uploads 存储的是本地上传文件的地址,发现是我的

表单忘记了加 enctype="multipart/form-data" 现在得到的 uploads 里存储的是上传后临时地址,如: \upload\upload__6c755bc7_120404cacce__8000_00000049.tmp,\upload\upload__6c755bc7_120404cacce__8000_00000050.tmp

而且运行到 [code="java"]
java.io.InputStream is=newjava.io.FileInputStream(uploads.get(i));
[/code]
依然报错:
java.lang.ClassCastException: java.lang.String

为什么 uploads 里存储的不是 File 类型呢?
[b]问题补充:[/b]
我使用的文件处理方式是:

[code="java"]

[/code]

  • 写回答

7条回答 默认 最新

  • zhoujuan520 2009-03-26 09:51
    关注

    就用commons fileupload嘛
    不用配置那个,struts2默认都是选择commons fileupload,说明commons fileupload是最好的实现.

    解决问题才是王道!费那事做啥

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题