|
主题: 朋友们进来看看,删除文件上传的问题!
|
 ︷o星空下dē落叶o︷
职务:普通成员
等级:1
金币:0.0
发贴:57
注册:2006/5/10 18:48:48
|
#12006/5/7 13:51:32
我看到动网论坛也没有很好的解决这个问题,就来这里发问了。 我希望做到: 1、当删除一篇帖子的时候,同时删除该帖子所包含的所有附件。 2、当用户上传了附件,但其他原因没有发表帖子,就删除上传的附件。
我开始想的是,当用户发表了一篇帖子,就创建一个文件夹来存放这篇帖子的附件,文件夹以当前时间或帖子标题来命名,删除帖子的时候删除这个文件夹。 但以时间或帖子标题来命名的的话,就会遇到同时提交帖子,或帖子标题一样的问题,这样创建的文件夹就会出错。而且解决不了上边的第2个问题。
不知道朋友们有没有什么高招解决这个问题!
|
 yiliaocheng
职务:普通成员
等级:2
金币:2.0
发贴:631
注册:2005/12/29 19:33:15
|
#22006/5/7 15:16:00
上传的附件都是根据时间和和随意选取的几个数字命名的,你说的同时上传文件名会相同的问题应该不存在.同时你不必根据为每个帖子的附件建立一个文件夹,那样不是文件夹的浪费吗?并且还有可以根据原文件的名称来明明上传的文件,你可以去搜搜.如果你觉得这个 上传文件原码可以的话,就下了看看.
|
 ︷o星空下dē落叶o︷
职务:普通成员
等级:1
金币:0.0
发贴:57
注册:2006/5/10 18:48:48
|
#32006/5/7 17:52:05
谢谢这位朋友,但我要解决的主要问题是,如何删除附件的问题,为每个帖子创建文件夹也不是我愿意的,主要是为了方便删除帖子的时候删除该帖子所包含的附件。
|
 ︷o星空下dē落叶o︷
职务:普通成员
等级:1
金币:0.0
发贴:57
注册:2006/5/10 18:48:48
|
#42006/5/7 17:56:17
我看了你给的源码,这是无惧上传类,但解决不了删除帖子附件的问题。
|
 yiliaocheng
职务:普通成员
等级:2
金币:2.0
发贴:631
注册:2005/12/29 19:33:15
|
#52006/5/7 17:57:23
删除文件的操作你会吗?这里提供你一个代码: <%set fo=server.CreateObject("Scripting.FileSystemObject" FilePath=rs("url" &","&FilePath FilePath=split(FilePath,"," for each FileName in FilePath if FileName<>"" then fo.DeleteFile server.MapPath(FileName) end if next set fo=nothing%>rs("url"  为数据库里存放文件的地址。
|
 ︷o星空下dē落叶o︷
职务:普通成员
等级:1
金币:0.0
发贴:57
注册:2006/5/10 18:48:48
|
#62006/5/7 19:42:34
你还没有明白我的意思。。。
第一个情况: 比如,别人在我论坛里边发了一个帖子,帖子里包含了2个图片。然后我希望,当我删除这个帖子的时候,能够把这帖子里所包含的附件也一起删除掉。 问题的关键是,删除帖子的时候,如何找到这两个图片,然后在用你刚才的代码删除掉。
第二个情况: 比如,别人在我论坛里边发帖子,他已经上传了附件,但他家突然停电了,帖子没发成,但附件已经传上来了。这个附件对于论坛来说,就是个垃圾。那么,我希望帖子没发成的时候,就立即把附件删除掉!
明白了吗。恩,不过说着说着,我到是有点思路了! 第一个情况,只要找到图片就可以删除,比较好办。 第二个情况,如果用户在上传后,不点击“提交”,就执行删除文件! 不知道能不能行,去试试先!
|
 yiliaocheng
职务:普通成员
等级:2
金币:2.0
发贴:631
注册:2005/12/29 19:33:15
|
#72006/5/7 19:55:42
对于第一个问题你可以这样办啊,设计一个表,一个字段存放帖子的ID,一个字段存放上传附件的地址,你删除帖子的时候可以同时搜索附件表,那不是可以找到它并删除。 第二个问题,我觉得你可以你可以设置提交帖子的时候同时上传附件就可以了。或者人工手动删除,也可以专门做一个附件管理系统,这个还比较容易实现。你说的那种方法好象很难实现。
|
 蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
|
#82006/5/7 20:36:57
应该是有方法的,如把上传图片文件名暂存在一表中,可以设置标记,标记有没有发表成功,但这种方法每次发表会影响些性能。 也可把没有发布的存放在application中,判断一下有没有未发布的文件列表,有就删除文件,而后清空application。
非常大鱼
|
 ︷o星空下dē落叶o︷
职务:普通成员
等级:1
金币:0.0
发贴:57
注册:2006/5/10 18:48:48
|
#92006/5/7 21:25:37
我开始想过用Response.Buffer=True暂时放入缓存中,然后只做一个提交按钮,同时提交附件和帖子内容,但不知道会不会太耗费服务器资源,现在正在测试中。 动网论坛也没有做我说的这个要求,也许是比较耗费资源把,我先试试!
|
 缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
|
#102006/5/7 21:37:24
5的的方法是,每次上传的时候,文件只是上传到一个临时目录,只有真正提交帖子后,文件才复制到正确的目录
这样,用户只是上传文件,而没有提交发贴.那么是无法访问上传的文件的
|
 ︷o星空下dē落叶o︷
职务:普通成员
等级:1
金币:0.0
发贴:57
注册:2006/5/10 18:48:48
|
#112006/5/7 23:09:25
恩,allinhands的方法不错,这样就只需要定期清理那个临时文件夹里边的东西了。 虽然没有达到我预期的效果,但已经把要实现这个问题所要付出的代价降得很低了! 谢谢  。 如果大家还有更完美的方法,请一定告诉我啊,我也会不断的寻找更加完美的解决办法!
|
 蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
|
#122006/5/8 1:41:09
gzwlj1944在上个帖子中说 引用: 我开始想过用Response.Buffer=True暂时放入缓存中,然后只做一个提交按钮,同时提交附件和帖子内容,但不知道会不会太耗费服务器资源,现在正在测试中。 动网论坛也没有做我说的这个要求,也许是比较耗费资源把,我先试试!
可能不太好,缓存是有时间性的,如果间隔时间太长,缓存会消失。 上传临时目录的方法不错的,可以考虑,ASP最后需要FSO来移动目录。 我以前也试过类似问题,但把已上传文件名保存在Session中,缺点是必须提交后才可删除没有加入连接代码的上传文件。后来想设法保存在Application中,用分隔符把上传文件分隔字串保存。如果没有断开链接,Application是为空的,如果有,按保存的文件名,删除相应文件,再清空Application即可。 清理事件可放在global文件的Session事件中比较适中,在Session开始或结束事件中,判断一下Application是否为空,空就什么也不用做,有就删除文件就行。 不过,对访问量不是很大的网并不要求这样苛刻,漏几张图片不会造成什么影响,但可节省编程时间。
非常大鱼
|
 ︷o星空下dē落叶o︷
职务:普通成员
等级:1
金币:0.0
发贴:57
注册:2006/5/10 18:48:48
|
#132006/5/8 18:33:42
蓝鲸在上个帖子中说 引用: 对访问量不是很大的网并不要求这样苛刻,漏几张图片不会造成什么影响,但可节省编程时间。
谢谢蓝鲸,我想我知道怎样解决第二个问题了! 还有,我现在并没有在给谁做网站,只是在研究技术而已。想到了问题,就希望能够得到解决,难免以后会遇到,以后遇到的话就可以轻松的解决了。 呵呵,不过要解决这个问题还真的好麻烦!! 我又想到一个新的问题:用户成功发表了帖子,但用户不够满意,要重新编辑帖子。这时会出现3个情况: 1、他没对[upload]********[/upload]进行操作; 2、他增加了上传文件; 3、他减少了上传文件,既删除了1个或多个[upload]********[/upload]; 对于1和2是很好解决的了。 第3个可以这样,当用户点“编辑”的时候,先用正则搜一下,把[upload]********[/upload]中的内容保存到Session或Application中,下边的问题就按上边的第二个问题处理。 呵呵,总算差不多解决了,不过真的够麻烦!
|