

在服务器端保存数据
使用上载时,用户可能会有各种意外操作. 在这里,我将用我的想象力描述用户的可能行为:
部分文件已上传,然后修改了文件内容并再次上传
文件上传已100%完成,请重新上传文件
同一页面上有多个上传按钮,可以上传同一文件或在不同页面上上传同一文件
以上四个项目是否足够复杂?另外,您的系统还具有自己的业务逻辑,因此非常有必要将上传的文件数据保存在服务器端. 并且,保存数据和获取数据的功能由您自己定义,该插件具有足够的灵活性.
由于它涉及服务器端技术,因此无法证明. 我将在这里解释我的项目中的实际使用情况,以显示如何实现自定义方法以实现在服务器端可靠地上传已保存的数据. 我定义的getUploadedSize函数如下:
文件初始化


文件上传后的代码

文件块的处理代码,up6对文件块的处理以及文件恢复的逻辑已得到极大地优化. 开发人员无需关心恢复的细节,因为up6默认为自动恢复.

我将请求发送到后台地址,并将文件名和文件的最后修改时间作为参数传递. 基于这两个参数,后台在服务器上找到与前台选择的文件相对应的文件,并返回服务器. 文件大小由插件返回并使用. 为什么要传递这两个参数?我们无法在前台的服务器上知道此文件的名称,因此我们将原始文件名用作辅助标识符. 为了防止用户在两次上传之间修改文件,我们还将文件的最后修改时间传递给服务器,并让服务器进行比较. 如果时间不对应,则会将上传的大小恢复为0,然后重新上传文件.
让我们看看在后台执行哪些工作. 中需要有一个表来记录每个文件的状态,其中包含以下字段:
文件ID标识(唯一)
服务器文件大小
本地文件大小
文件块偏移量(在整个文件中的位置)
文件块大小
文件块索引(基于1)
当前文档是否已完成
根据client_filename和last_modified_date以及系统中的其他相关信息,您可以在服务器端找到上载文件的大小,然后将其返回给客户端. 当然,这是我自己的用法,也可以根据需要灵活设计. 简而言之,最终目标是找到与服务器前台选择的文件相对应的文件,并正确返回上传的大小.
要注意的另一点是,在简历的第二步中,连续提交文件的过程还要求服务器准确定位相应的文件,并且不能将A的数据附加到B. 使用的方法是提交两个参数,fileName和lastModifyDate(已经写在插件中,可以直接由服务器获取),然后服务器找到相应的文件并将其附加.
另一个麻烦的是,当获取背景文件时,它需要是二进制文件,并且我们的提交是使用FormData提交的,因此PHP代码需要这样编写:
file_put_contents('uploads /'.$ filename,file_get_contents($ _ FILES [“ file”] [“ tmp_name”]),FILE_APPEND);
如果上述说明不够清楚,则需要您自己进行探索. 毕竟,考虑到该插件可能在复杂的系统中使用,您仍然需要做很多工作. 或者,您也可以给我留言,我很乐意回答您的疑问.
此版本中的其他更改
从1.0到2.0,Huploadify添加了许多新功能,但这只是新功能,其使用方式与以前的相同. 例如,如果您不想使用上面的断点恢复功能超大文件传送,只需将breakPoints设置为false,该插件仍将像以前一样工作. 除了断点恢复之外,该插件还进行了以下更改:
添加了onSelect回调函数,该函数在选择文件后触发,用法与uploadify官方网站相同
up6提供3个事件,选择文件,选择文件夹,粘贴
用户选择文件时会触发open_files,选择文件夹时会触发open_folders,并且粘贴会触发上述两个事件,因为用户可能会粘贴文件和文件夹

删除正在上传的文件并中断发送请求
改进了输入文件组件的accept属性支持,并且仅在浏览时显示正在运行的文件格式,这是东西:

4. 方法调用界面向外界打开,上载,停止,取消,禁用,变通. 我在演示中有一个演示. 使用方法如下: var up = $('#upload'). Huploadify({
auto: false,
fileTypeExts: '*. jpg; *. png; *. exe; *. mp3; *. mp4; *. zip; *. doc; *. docx; *. ppt; *. pptx; *. xls; * .xlsx; *. pdf',
multi: true
});
up.upload(1); //开始上传文件,接收一个参数,指示要上传的文件数量,可以传入*上载队列中的所有文件
up.stop(); //暂停上载队列中的所有文件,而不接收参数. 用于打开要传输的断点
up.cancel(1); //删除队列中的文件超大文件传送,接收一个参数,这意味着删除前几个文件,您可以传入*删除队列中的所有文件
up.disable(); //使文件选择按钮无效,并且不接收参数
up.ennable(); //启用选择文件按钮,不接收参数5.修改其他已知错误
结束
该插件刚刚完成,并且我们已经完成了与后端程序员的调试. 断点恢复功能尚未找到,欢迎您在使用时问我任何问题. 老实说,该功能的使用令人费解. 为了确保最大的灵活性,您可以与我进行很多交流〜
我在演示中使用了本地存储来保存上传文件的大小. 下载压缩包后,您可以看到效果. 上载相对较大的视频文件,将其上传到中间,关闭浏览器,再次打开浏览器以上传相同的文件,您将看到从上次中断的位置继续上传.
有关详细信息,请参阅我写的这篇文章: %e5%a4%a7%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e8%a7%a3 %e5%86%b3%e6%96%b9%e6%a1%88 /
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shumachanpin/article-235668-1.html
扔股市是血本无归