java删除上传到oracle数据库的图片,删除记录的同时删除数据库本地图片,如何删除记录的同时定位到图片?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java删除上传到oracle数据库的图片,删除记录的同时删除数据库本地图片,如何删除记录的同时定位到图片?相关的知识,希望对你有一定的参考价值。

图片字段
本地路径F:/java/Tomcat7/webapps/cusi/append/cusm/
sql.setLength(0);
sql.append("delete from cusm_fix where ");
sql.append("rid='").append(bean.getId()).append("' ");
sql.append(" and id='").append(bean.getBak()).append("' ");
po.execSql(sql.toString());
File File1 = new File("F:/java/Tomcat7/webapps/cusi/append/cusm/");
定位不到需要的图片
File1.delete();
return 0;
求高手给改一下 新手学习

参考技术A 1、明白一些概览:
1)上传的图片并没有真正的存储在oracle数据库里,orcale数据库里其实存储的是图片的路径。
2)从浏览器上传图片到后端Action,action调用相应文件存储逻辑(文件存储系统)由文件存储系统完成图片的存储,并返回文件的路径。最后将这个路径保存到oracle数据库(这个部分可以很简单也可以很复杂视实际情况而定)。
2、相关删除逻辑,通过数据库里的文件路径找到实际的存储位置执行删除。删除成功后再删除数据库里相关记录。
参考技术B 其实这个问题 = 如何找到本地图片 并且确认 上传的就是这一张图片。

需要考虑: 如果在本地改了图片文件名 或者 改了图片的存储路径
如果 上面的不考虑的话:
可以在上传的时候 纪录下来本地的存储路径及文件名,删除时 获取纪录的信息进行file操作删除。 如果用户做了文件的修改(如上面所说的)找不到就没法删 就不管了。
参考技术C 1、删除该条记录得时候拿到图片得路径再删除.
2、当记录删除成功后,通过路径得到File对象,然后delete文件
3、完成
参考技术D 一般数据库上传照片的时候 会插入一条记录,记录了文件的基本信息,包括路径或者二进制数据
你要删的时候 肯定是要知道文件的地址的然后再通过File删除就可以了
第5个回答  2016-08-09 你删除之前先查出来图片的地址,然后先用输入流把这个图片删掉,然后再删掉数据库里面的这个记录应该就行了吧

ajaxFileUpload异步上传图片,服务器文件叫多,如何删除啊~~

由于使用的是ajaxFileUpload异步上传,及时显示出了图片,每一张都上传到服务器上去了,用户随便换的话,之前上传的图片就都累计在服务器,如何删除多余的啊?
如果能够实现上传前预览最好了

不太苟同楼上的做法,这种不光耗费服务器资源,也耗费数据库的资源。如果是类似腾讯这种人气的网站。就知道问题了。
说下我在实际中的做法吧。当然我的客户人气没有那么高。每年顶多几万人。
比如有个图像上传预览。也是要及时预览并上传到服务器端。我用的是uploady上传插件。
第一张图片上传后以用户名命名.JPG保存。第二次上传就判断当前用户的photo【这是上传图片保存在数据库中】是否存在,如果存在就以用户名#TEMP#.JPG【如果当前用户的photo已是#TEMP#.JPG结尾则以用户名.JPG】保存。如果不存在就依然以用户名.JPG保存。如此互斥。这样只要你不覆盖用户点击保存前你的那张图片,数据库也不会有变动。预览的图片也就永远只有一张。如果你要清理这1万张预览图那也是相当容易的【比如你可以将预览图放在一个临时文件夹中,做个定时任务,一个星期清理一次也差不多了,顶多也就上万张,平时估计几百张就不错了,而实际用户的图片也是以年份/省市/等单独存放,避免一个文件夹过大】。本人项目中的用法,如有问题,请赐教。
参考技术A 可以做个批量清理的小程序,把所有上传的图片,都存在数据库里,然后遍历上传的这个目录,读取到文件名以后,去数据库查,要是不存在的话,说明这张图是没有用的,删除~本回答被提问者采纳 参考技术B 我现在也是这个问题 来找找有木有更好的方法 还没找到 那就先说说我的方法 不行的知识介绍 如果那位大神有更高的放法还请赐教
我的想法就是ajaxFileUpload上传的文件会有一个文件名 把文件名放到session中用户使用这个图片了删除原来的图片 如果是一张图的 用户没有用第一次上传的图 接着又换了一张这时替换session中的文件名同时删除第一张图片 如果用户没有用刚上传的图片你可以定一个时间比如说30分钟如果30分钟还没有使用这个方法就删除图片清空session
其实还可以通过监听浏览器的刷新、关闭操作发送ajax请求来执行那个方法

感觉还可以 就是还没有实现呢 仅供参考

以上是关于java删除上传到oracle数据库的图片,删除记录的同时删除数据库本地图片,如何删除记录的同时定位到图片?的主要内容,如果未能解决你的问题,请参考以下文章

Java之图片上传与删除功能的实现

Java操作MinIO实现文件的上传和删除。

ajaxFileUpload异步上传图片,服务器文件叫多,如何删除啊~~

nodejs+koa+vue实现上传文件(图片)到服务器以及删除图片

如何使用 Codeigniter 删除上传的文件?

Vue结合element ui 实现图片上传可预览,可删除,以base64字符串上传到服务器