日期:2014-05-17  浏览次数:20770 次

上传图片的同时,添加新闻的问题??
如果我不写判断图片是否为空的话,只能同时上传图片和新闻,但是我要的效果是可以再上传新闻的同时可以上传图片,也可以不上传图片,但是我判断上传的图片是否为空后,只能上传新闻,如果图片和新闻一起上传,就报 read error 这个错误,
搞了半天还是有问题,求助于各位高手,

【还有一个问题就是,我上传图片到一个文件夹后,没有将路径存到数据库,怎么将图片删除啊 ,不是直接到程序的文件夹里面删除,我是想在查询新闻的时候,在后面跟一个删除的超链接,去删除上传到文件夹里面的图片,但是我知道要怎么做,是写代码吗,???但是我没有经过数据库啊 ,不能写sql语句啊 】???????????

//添加新闻
public String newAdd(){

int i=0;
try{
if(this.getUploadFileName()==null || this.getUploadFileName()==""){
//添加新闻
NewDao dao = new NewDao();
NewInfo newinfo = new NewInfo();

newinfo.setScontent(info.getScontent());
newinfo.setNid(info.getNid());
newinfo.setSuploadpath(this.getUploadFileName());
newinfo.setSauthor(info.getSauthor());

i = dao.newAdd(newinfo);

if(i > 0){
return this.SUCCESS;
}
else{
return this.INPUT;
}

}

if(this.getUploadFileName() != null){

System.out.println("11111111");

//上传图片
FileOutputStream out = new FileOutputStream(getSavePath() + "\\" + getUploadFileName());
FileInputStream in = new FileInputStream(getUpload());

byte[] b = new byte[1024];
int lan = 0;
while((lan =in.read(b))>0){
out.write(b,0,lan);
out.close();
in.close();
}

//添加新闻
NewDao dao = new NewDao();
NewInfo newinfo = new NewInfo();

newinfo.setScontent(info.getScontent());
newinfo.setNid(info.getNid());
newinfo.setSuploadpath(this.getUploadFileName());
newinfo.setSauthor(info.getSauthor());

int k = dao.newAdd(newinfo);

if(k > 0){
return this.SUCCESS;
}
else{
return this.INPUT;
}

}


}
catch(Exception ex){
ex.printStackTrace();
}

return this.SUCCESS;

}

------解决方案--------------------
文件上传的form和常规数据的form分开提交,
上传后把虚拟路径保存到数据库,比如:/upload/201208/123.jpg
删除图片时,首先获得工程的磁盘路径,用这个方法:
request.getSession().getServletContext().getRealPath("/");
比如是:D:\\project\\myProject\\editor\\WebRoot\\
再把这个磁盘路径和文件的虚拟路径合起来,就是一个完整的路径,
找到了这个文件,你怎样操作它都可以
------解决方案--------------------
编辑新闻的话,我建议楼主是用在线文本编辑器ckeditor,可以直接上传图片到服务器并插入新闻中;数据库中新闻的内容就是 html形式的内容 在页面上显示效果 跟你编辑时的一样
------解决方案--------------------
如果 新闻就一张图片 而且可以添加 也可以不添加的时候
你可以 在action里判断一下 
if(file!=null){ 
new.addImgPath(fileimgPath); 
}
newDao.add(new);
修改新闻的时候,可以在表单里设置一个隐藏域
<input type="hidden" name="imgpath" value="#new.imgPath">
然后更新的时候,先判断 上传的文件是否为空,如果不为空,就上传并删除原图片
if(file!=null){ 
 File f=new File(imgpath);
f.delete();
new.addImgPath(fileimgPath); 
}
newDao.update(new);

------解决方案--------------------
探讨

回复 2 楼 我是添加新闻,但是有的新闻要上传图片,有的不要上传图片,如果分开写,会有问题,有以前试过,您说的删除图片的问题,假设,我放到服务器上,那要怎么去删除里面的图片啊,到时候不是找磁盘了啊 ,