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 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题