我用Struts提供的jar包,做图片的上传,上传的时候为了达到图片的唯一性我用时间为该图片重新命名,我自己写了个方法可使不行,请教那位大侠帮小弟看一下!
代码如下:
package org.web.actionform;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
import org.liudeqing.entity.Goods;public class AddGoodsForm extends ActionForm 
{
private Goods goods = new Goods();
private FormFile images;

private String beginDate;
private String endDate;


public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
public FormFile getImages() {
return images;
}
public void setImages(FormFile images) {
//得到上传的文件名
String path=images.getFileName();
SimpleDateFormat dateInfo=new SimpleDateFormat("yyyyMMddHHmmssS");//格式化时间输出 
String Rname=dateInfo.format(new Date());//取得当前时间,Date()是java.util包里的,这作为真实名称
//重新为该图片分配名称
path = Rname+path.substring(path.length()-4, path.length());
//打印输出新图片的名称
System.out.println("Images name "+path);
System.out.println("this images is "+images);
this.goods.setImages(path);
this.images = images;
System.out.println("FileImages name "+images.getFileName());
}
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.goods.setBeginDate(java.sql.Date.valueOf(beginDate));
this.beginDate = beginDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.goods.setEndDate(java.sql.Date.valueOf(endDate));
this.endDate = endDate;
}}

解决方案 »

  1.   

    它提供的jar中没有相关的方法,反正用smartupload做上传时,可以改名字的。
      

  2.   

    没有用过struts下的所以不清楚。
      

  3.   

    给个建议,我以前做都是把图片封装为一个对象,包含三个属性,
    int id ;
    String name;
    byte[] content;
    我觉得这样就很好设置文件名了..
    且保存数据库也方便.
      

  4.   

    struts上传的文件是会统一改成它自己的名字的,所以你获取到的将会是一串很长的文件名,好像是以tmp结尾的,如果你真想获取到你上传时候的文件名,那是需要通过JavaScript来截取文件名然后再通过参数传到action里面作处理吧,具体操作是
    写一个js方法,获取到的是一个绝对路径
    通过字符串截取,
    int i = fileName.lastIndexOf("/");
    fileName = fileName.subString(i+1);
    这个应该就是文件名了,你测试下把
      

  5.   

    将图片上传后 用在Java中调用dos命令 修改文件名字 这样可以吗
      

  6.   

    看看有没有setFileName之类的吧?那怎么设置保存的路径呢?在那个地方就可以改名了吧
      

  7.   

    如果是linux系统的话
    上传完了以后:
    Process p_proc = Runtime.getRuntime().exec("mv a.bmp b.bmp");
    p_proc.waitFor();
    如果是Windows的话,我不记得命令了。
    我觉得,反正肯定能实现。