struts2多图片上传问题

xiaozhangnima 2009-09-17 01:57:20
页面代码
<s:form id="f1" name="UploadForm" method="post" action="UploadImage" enctype="multipart/form-data">
<s:file id="file1" name="spUpload" ></s:file>
<s:file id="file2" name="spUpload"></s:file>
Action
public class ImageUploadAction extends ActionSupport {

private int userid;
private File[] spUploads;// 文件内容
private String[] spUploadFileNames;// 文件名
private String[] spUploadContentTypes;// 文件类型
private String dir; // 目标目录
private String[] targetfilename; // 目标文件名

public String getDir() {
return dir;
}

public void setDir(String dir) {
this.dir = dir;
}

public String[] getTargetfilename() {
return targetfilename;
}

public void setTargetfilename(String[] targetfilename) {
this.targetfilename = targetfilename;
}
public int getUserid() {
return userid;
}

public void setUserid(int userid) {
this.userid = userid;
}

public File[] getSpUploads() {
return spUploads;
}

public void setSpUploads(File[] spUploads) {
this.spUploads = spUploads;
}

public String[] getSpUploadFileNames() {
return spUploadFileNames;
}

public void setSpUploadFileNames(String[] spUploadFileNames) {
this.spUploadFileNames = spUploadFileNames;
}

public String[] getSpUploadContentTypes() {
return spUploadContentTypes;
}

public void setSpUploadContentTypes(String[] spUploadContentTypes) {
this.spUploadContentTypes = spUploadContentTypes;
}

public String uploadImage() throws Exception {

if (null == spUploads || "".equals(spUploads)) {
this.addFieldError("errorMes", "请上传文件");
}
dir = ServletActionContext.getServletContext().getRealPath(
"/uploadimage");

//FileUtil.makeDir(dir);
String[] mydir = new String[spUploads.length];
String[] tname = new String[spUploads.length];

for (int i = 0; i < spUploads.length; i++) {
tname[i] = generateFileName(spUploadFileNames[i]);
// 建立一个文件
mydir[i] = dir + File.separator + tname[i];

File target = new File(dir,tname[i]);
// 保存到目录中
FileUtils.copyFile(spUploads[i],target);
int line = 0;
BlogCreateService bcs = new BlogCreateService();
line = bcs.uplaodImage(userid,targetfilename[i]);
if(line<=0){
return INPUT;
}
}
return SUCCESS;

}
红字显示空指针异常,也就是获取不到文件
我配置了临时路径还有拦截器(拦截图片格式的)
请问怎么才能解决这个问题!!!!分不够可以加
...全文
188 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
soonj 2009-09-17
  • 打赏
  • 举报
回复
大家反应好快啊。学习。。
xiaozhangnima 2009-09-17
  • 打赏
  • 举报
回复
OK了,学习了
再次感谢!!!!!!!!!
结贴,希望下次有困难时还能帮助
woming66 2009-09-17
  • 打赏
  • 举报
回复
这个简单 就上在每一个月的1号00:00:01执行一个Timer线程为你创建一个文件夹,网上关于这方面的例子很多,你可以去google

或者在上传的时候判断一下
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String name = sdf.format(new Date());

File file = new File(request.getSession().getServletContext().getRealPath("/" + name)); //手写的 我也不太觉得路径对不对 自己测试以下吧

if(!file.exists()) {
file.createNewFile();
}
......
xiaozhangnima 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 woming66 的回复:]
在定时服务中 设定好时间 每个月的一号 用Timer给你创建一个文件夹来存放图片!
[/Quote]
能说的具体点么?谢谢
楼上各位,谢谢了都
飞哥在线 2009-09-17
  • 打赏
  • 举报
回复
struts中的,get和set方法的命名规则和页面中对象的名字有关系
将你的代码改成如下,应该可以。。。


private File[] spUpload;// 文件内容


public File[] getSpUpload() {
return spUpload;
}

public void setSpUpload(File[] spUpload) {
this.spUpload = spUpload;
}
woming66 2009-09-17
  • 打赏
  • 举报
回复
在定时服务中 设定好时间 每个月的一号 用Timer给你创建一个文件夹来存放图片!
imasmallbird 2009-09-17
  • 打赏
  • 举报
回复
晕,回完别的帖子,这个帖子已经回慢了
struts2文件上传,一般全是用js,多出来一个file表单项,而不是在页面上写死
可以参考一下这个JS+Struts2多文件上传完整示例



woming66 2009-09-17
  • 打赏
  • 举报
回复
单个文件和一个文件上传没什么区别,就是在ACTION中一个是集合,一个是File

定时服务 JDK Timer可以实现这个功能



imasmallbird 2009-09-17
  • 打赏
  • 举报
回复
private File[] spUploads;// 文件内容

<s:file id="file1" name="spUpload无s" > </s:file>
<s:file id="file2" name="spUpload无s"> </s:file>

xiaozhangnima 2009-09-17
  • 打赏
  • 举报
回复
晕死,这不和单文件上传一样了么?
感谢了,另,怎么一个月建一个文件夹,存放图片啊
woming66 2009-09-17
  • 打赏
  • 举报
回复
试试你就知道了!
xiaozhangnima 2009-09-17
  • 打赏
  • 举报
回复
多文件貌似可以吧,不是名字问题吧
woming66 2009-09-17
  • 打赏
  • 举报
回复
还用改下面的地方
private String[] spUploadFileNames;// 文件名
private String[] spUploadContentTypes;// 文件类型


正确的:
private String[] spUploadsFileName;// 文件名
private String[] spUploadsContentType;// 文件类型
woming66 2009-09-17
  • 打赏
  • 举报
回复
<s:file id="file1" name="spUpload" > </s:file>

private File[] spUploads;// 文件内容

名字都不一样能上传吗! 改一个就行

改为:<s:file id="file1" name="spUploads" > </s:file>

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧