我用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;
}}
代码如下:
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;
}}
int id ;
String name;
byte[] content;
我觉得这样就很好设置文件名了..
且保存数据库也方便.
写一个js方法,获取到的是一个绝对路径
通过字符串截取,
int i = fileName.lastIndexOf("/");
fileName = fileName.subString(i+1);
这个应该就是文件名了,你测试下把
上传完了以后:
Process p_proc = Runtime.getRuntime().exec("mv a.bmp b.bmp");
p_proc.waitFor();
如果是Windows的话,我不记得命令了。
我觉得,反正肯定能实现。