惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
罗磊的独立博客
M
MIT News - Artificial intelligence
G
Google Developers Blog
V
V2EX
D
Docker
博客园_首页
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
WordPress大学
WordPress大学
T
Tailwind CSS Blog
博客园 - 司徒正美
J
Java Code Geeks
L
LangChain Blog
博客园 - 三生石上(FineUI控件)
B
Blog RSS Feed
博客园 - 【当耐特】
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - Franky

博客园 - coderlee

SysListView32 的使用资料 使用ThinkPHP的一些小经验 Windows操作系统中的I/O(读/写 输入/输出) 记下来 关于InitCommonControls() windows内核对象 笔记 vc开发windows程序时的字符串问题的一个归纳(原创) ie6的一个css的BUG MSSQL 注入资料总结 sql 高级注入【转载 国外某牛人写的】 MYSQL 注入资料总结 Access SQL 注入指南 Ver0.2.1 xss,csrf入侵方式小结 站内的GET和POST 与 站外的GET与POST 记一次艰难的sql提权。 CSS需要注意的事项 PHP5的__get与__set 如何在web服务器或ftp服务器上开设VPN服务 - coderlee 有关javascript 有关xhtml和css 有关字符,字节以及编码
上传文件与文本编辑器的那点破事:冗余与管理
coderlee · 2009-07-30 · via 博客园 - coderlee

web开发总是回避不了一个问题,那就是文件上传的问题,不管是cms还是bbs都是如此。

问题一: 如何关联图片和文章之间的关系?

问题二: 当在文章发布页面上传文件后,文章却没有提交,造成的垃圾文件怎么办?

问题三: 当编辑文章时,在编辑器中删除不用的图片文件怎么办?

一 异步上传环境下

目前web上传流行的方式是iframe或ajax异步上传文件后,返回文件上传至服务器后的路径与文件名到添加文章的FORM,然后提交文章。

这样做的坏处是用户可能上传文件后却不提交文章,造成了垃圾文件,好处是文章提交到服务器后,我们不需要再对文件占位符进行Replace。

针对这种异步文件上传的缺点,可以使用以下“UpfileStamp方法”避免冗余文件的产生:

1 点击添加文章 打开文章添加的页面的时候  生成一个UpfileStamp  该值保存在文章添加的FORM中的一个Hidden类型的Input控件中。

2 点击上传文件,打开Iframe页,将该UpfileStamp传到Iframe页,文件上传保存到服务器的时候,将该UpfileStamp保存到上传文件的数据表TB_Upfiles中。

3 继续上传文件,依然使用该UpfileStamp,这个一个UpfileStamp标识了同一组上传文件。

4 点击添加文章,文章接收页面得到Hidden域的UpfileStamp的值,将文章插入数据库,得到文章的ID,更新这组UpfileStamp的文件的ArticleID为刚刚插入的文章ID。

5 系统加入垃圾文件清理功能,对所有仅有UpfileStamp而没有ArticleID的上传文件纪录进行清理。

二 同步上传环境下

在Php或Asp.net中的同步文件上传,就是文件上传和文章FORM的提交在同一个请求中进行,由PHP或Asp.net对文本域和数据域进行分离。

这样做的好处就是避免了文件已经上传但文章并未添加的问题,但是坏处就是我们要在文本编辑器中使用文件占位符,然后数据提交到服务端再对文件占位符进行Replace替换,替换为上传后的文件,这个过程非常繁琐,无论是对于编辑器的JS来说还是服务器的Replace来说。