Ajax实现文件上传的临时垃圾文件回收策略
转载请注明原文出处:http://www.cnblogs.com/ygj0930/p/6126240.html
在我们web开发过程中,一个很重要的技术就是Ajax(异步传输)。Ajax通过把数据从网页DOM中独立出来进行后台操作,从而达到在不影响当前页面的布局、地址栏等的情况下动态地改变网页内的数据内容。关于Ajax的画图理解请移步:http://www.cnblogs.com/ygj0930/p/6126542.html
设想有下面一种情况:我们正在编辑一篇博客,在编辑过程中,插入了一张图片img1。好,此时,当前网页的在线编辑器利用Ajax技术把img1上传到了服务器的文件夹中,然后再把其在服务器中的保存地址url返回给网页DOM,网页DOM再把该url通过img标签在编辑器中显示出图片的缩略图。然而,我们在编辑过程中,有可能出现插错了图片、或者需要换更好的图片等情况,此时,我们简单地在编辑器中按回退键删除掉“那张图片”即可。但是实际上你只是删除了当前在线编辑器内的一个<img src=url>标签而已!丝毫不会影响到服务器上的图片文件本身。试想,一天会有多少这种类似的被“舍弃”的图片、附件等等垃圾文件出现在我们的服务器里?这将浪费我们多少空间呀!
鉴于此,我们就要对Ajax上传过来的文件们进行管理:基本思路就是,在事件完成后,检测此前上传过的所有文件,哪些保留了哪些被“舍弃”了?舍弃了的就删除掉不需再保存在服务器中。
例如:上面博客编辑过程中产生的垃圾图片文件管理,基本处理思路如下:
如图:
在编辑博客的过程中,插入了img1,然后在继续编辑博文的同时,后台ajax异步传输把img1上传到了服务器。服务器执行数据库操作,把img1的路径名作为属性值插入到博文数据库中作为一条记录,由于只有图片上传而没有具体的博客,所以这条记录的文章id属性值为null。
然后,在后续编辑过程中由于觉得img1没必要,把它删了。之后又相继插入了img2、img3,并点击了提交博文。此时,网页把在线编辑器内部的所有内容提交上去,并根据内容中所包含的文件路径,在相应的文件数据库表格中(如:img表)修改各记录,路径在文章内容中的说明最终提交的内容包含该图片,则为img表中的art_id赋值(此处art_id=1)。
最后,定期管理img表(其他类型文件管理同理,比如管理附件表file),检测每条记录的art_id属性值,为空则说明是垃圾文件,根据其img_url值检索到服务器上该文件进行删除操作。
Ajax实现文件上传的临时垃圾文件回收策略的更多相关文章
- HTTP文件上传服务器-支持超大文件HTTP断点续传的实现办法
最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传.笔者在以前的博客如何实现支持大文件的高性能HTTP文件上传服务器已经介绍了实现大文件上传的一些基本 ...
- PHP实现单文件、多文件上传 封装 面向对象实现文件上传
文件上传配置 客户端配置 1.表单页面 2.表单的发送方式为post 3.添加enctype = "multipart/form-data" <form action=&qu ...
- php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特 色),学php的人都知道文件上传怎么做,但很多人在编程中 ...
- SpringBoot - 实现文件上传2(多文件上传、常用上传参数配置)
在前文中我介绍了 Spring Boot 项目如何实现单文件上传,而多文件上传逻辑和单文件上传基本一致,下面通过样例进行演示. 多文件上传 1,代码编写 1)首先在 static 目录中创建一个 up ...
- 【转载】文件上传那些事儿,文件ajax无刷上传
导语 正好新人导师让我看看能否把产品目前使用的FileUploader从老的组件库分离出来的,自己也查阅了相关的各种资料,对文件上传的这些事有了更进一步的了解.把这些知识点总结一下,供自己日后回顾,也 ...
- 聊一聊jquery文件上传(支持多文件上传)
谈到文件上传,现在一般都用现成的组件可以使用.PC端的可以使用uploadify.针对微网站H5也有uploadifive.但是这组件并不能满足各种场景的需求,例如:预览 切图 放大缩小,取消之类的. ...
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile(转)
文件上传项目的源码下载地址:http://download.csdn.net/detail/swingpyzf/6979915 一.配置文件:SpringMVC 用的是 的MultipartFil ...
- jQuery插件AjaxFileUpload文件上传实现Javascript多文件上传功能
Ajax file upload plugin是一个功能强大的文件上传jQuery插件,可自定义链接.或其它元素庖代传统的file表单上传结果,可实现Ajax动态提示文件上传 过程,同时支撑多文 ...
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file <!-- 配置Multipa ...
随机推荐
- 在SQLite中使用事务
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果为成功则提交事务,否则回滚 ...
- Java多线程之Callable接口与Runnable的实现以及选择
通过实现Runnable接口的实现 package Thread; import java.util.concurrent.ExecutorService;import java.util.concu ...
- APPLE框架之高效便捷的Repository解决方案
原文地址:http://perfy315.iteye.com/blog/1460226 Spring Data JPA 转至:http://note.sdo.com/u/855924134/n/P15 ...
- rank,dense_rank,row_number使用和区别
rank,dense_rank,row_number区别 一:语法(用法): rank() over([partition by col1] order by col2) dense ...
- 二叉树 遍历 先序 中序 后序 深度 广度 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- JQuery实现可编辑的表格
点击表格后可直接编辑,回车或鼠标点击页面其他地方后编辑生效,按Esc可取消编辑 第一种单击表格可以编辑的方法 //相当于在页面中的 body标签加上onload事件$(function() { ...
- 为什么有的需要安全连接的的application只有开Fiddler才好用?
Help! Running Fiddler Fixes My App??? Over the years, the most interesting class of support reques ...
- Refuses to install for WTP10
Refuses to install for WTP10 description http://imgur.com/a/QN4iM I am a WTP10 user. I’m running b ...
- linux ifconfig -a
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/i686-pc ...
- SpringBoot添加对jsp的支持
1.在pom.xml添加如下内容: <dependency> <groupId>org.apache.tomcat.embed</groupId> <arti ...