删除服务器上的图片

zjhlsf 2012-04-10 12:02:06
我是用ss2h做的我上传图片到服务器上,地址上传到数据库中,这是成功的,可是我删除就不行了,服务器上的图片删不了,获取不到img的值,我都找了好久了,实在没办法,还得请大神们看看
public String deleteTest(){
testBiz.delTest(shopPoster.getId());
String savePath = ServletActionContext.getServletContext().getRealPath(
""); // 获取项目根路径
savePath = savePath + "/upload/";
File file=new File(savePath+shopPoster.getContext());
file.delete();
resultMap="testActionshow.action";
return SUCCESS;
}
jsp上的 <script type="text/javascript">
function del(id){
location.href="shopEcsVoteOptiondeletePoster.action?shopPoster.id="+id
}
function ret(){
location.href="addPoster.jsp";
}
</script>
<body ><!--
<form action="shopEcsVoteOptiondeletePosters.action" method="post" name="myForm">
--><table align="center" border="1">
<s:iterator value="#request['listShopPoster']" var="listShopPoster">
<tr>
<td>
<img src="Poster/<s:property value="#listShopPoster.context"/>" height="50" width="50" />
</td>
<td>
<input type="button" value="删除" onclick="del(<s:property value="#listShopPoster.id"/>)">
</td>
</tr>
</s:iterator>
<tr>
<td>
<input type="button" value="继续添加" onclick="ret()">
</td>
</tr>
</table><!--
</form>
--></body>
...全文
311 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjhlsf 2012-04-14
  • 打赏
  • 举报
回复
问题解决了,谢谢们!
s478853630 2012-04-12
  • 打赏
  • 举报
回复
删除文件时要确保上次开启的文件流已经关闭,否则该文件受磁盘保护,无法删除
zjhlsf 2012-04-12
  • 打赏
  • 举报
回复
那我删一条可以,批量就不可以,这是神马情况
zjhlsf 2012-04-12
  • 打赏
  • 举报
回复
大神们,我实在找不到办法了,分是少了点,贴个批量删除的代码咯
zjhlsf 2012-04-12
  • 打赏
  • 举报
回复
是呀,location.href="shopEcsVoteOptiondeletePoster.action?shopPoster.id="+id+"&context="+img;你看我删除一条都是传值过来的,我就想不明白了,我的地址是存到context字段里,我用类点get这属性为什么是空??
a312983516 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
public String deletePosters(){
shopManageService.deleteShopPosters(shopPosterIds);
try {
for(int i=0;i<shopPosterIds.length;i++){
String savePath = ServletActionContext.getServletContext().getReal……
[/Quote]

可以这么写 你先解决空值吧 空的话肯定是删不掉的!
DavidChou 2012-04-12
  • 打赏
  • 举报
回复
1.上传的时候记得一定要flush一下确认流缓冲处理,并把流关闭掉,否则即便文件存在也是删除不掉的。
2.删除文件的时候调试一下,看你删除的时候文件路径是否存在
zjhlsf 2012-04-12
  • 打赏
  • 举报
回复
public String deletePosters(){
shopManageService.deleteShopPosters(shopPosterIds);
try {
for(int i=0;i<shopPosterIds.length;i++){
String savePath = ServletActionContext.getServletContext().getRealPath(""); // 获取项目根路径
savePath = savePath + "/Poster/";
savePath=savePath.replace("\\", "/");
context=context.substring(context.lastIndexOf("/")+1);
File file=new File(savePath+shopPoster.getContext());
file.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
resultMap="shopEcsVoteOptionlisPoster.action";
return "index";
}
我这样写有错吗??shopPoster.getContext()是空的,我存是用这属性存的路径
killer7112 2012-04-12
  • 打赏
  • 举报
回复
批量删的话,做个arraylist 把需要删的 add到里面 然后clear();试试
a312983516 2012-04-12
  • 打赏
  • 举报
回复
给你传一个我用来删除图片的

@Override
public void init() throws ServletException {
try {
String tomcatPath = System.getProperty("user.dir");
String filePath = tomcatPath.substring(0,tomcatPath.length()-4)+"/webapps/ios/images";
File file = new File(filePath);
if(file.exists()&&file.isDirectory()){
File [] files = file.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isFile()){
files[i].delete();
}
}
}
System.out.println("<提示:清理图片缓存成功!>");
} catch (Exception e) {
System.out.println("<提示:清理图片缓存失败!>");
e.printStackTrace();
}
super.init();
}
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

那我删一条可以,批量就不可以,这是神马情况
[/Quote]

if如果file存在 则
file.delete();
else没有就打印下
没有+savePath+shopPoster.getContext()+文件


貌似你的这些代码我没看到传个集合或者是数组什么的?
那怎么能保证批量删除呢?
起码可以弄个checkbox 传递给action的集合或者数组然后在批量删
a312983516 2012-04-12
  • 打赏
  • 举报
回复
批量删除不行? 我看看你批量删除怎么写的 帖下代码
ylovep 2012-04-10
  • 打赏
  • 举报
回复
楼主要确保文件在服务器的路径必须正确 若路径错误肯定无法删除
zjhlsf 2012-04-10
  • 打赏
  • 举报
回复
在img添加个name="shopPoster.context"也不行
zjhlsf 2012-04-10
  • 打赏
  • 举报
回复
这没错吧

67,549

社区成员

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

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