ASP.Net:写入文件块..HTTP 文件上传与恢复

2024-02-10

请参考问题:恢复上传文件控制 https://stackoverflow.com/questions/2062852/resume-in-upload-file-control

现在为了找到上述问题的解决方案,我想研究它并开发一个可以恢复 HTTP 文件上传过程的用户控件。

为此,我将在服务器上创建一个临时文件,直到上传完成。上传完成后,会将其保存到所需位置。

我想到的程序是:

  1. 在服务器上创建一个具有唯一名称(可能是 GUID)的临时文件。
  2. 读取一块文件并将其附加到服务器上的此临时文件中。
  3. 继续步骤 1 至 3,直到达到 EOF。
  4. 现在,如果连接丢失或用户单击pause按钮,停止写入文件,且不删除临时文件。
  5. 再次点击恢复或再次上传相同文件将在服务器上检查该文件是否存在以及用户是否要resume or to overwrite. (不知道如何检查它是否是同一个文件。另外,如何逐步将块从客户端发送到服务器。)
  6. 点击resume将从需要上传的位置开始并将其附加到服务器上的文件中。 (再次不确定如何做到这一点。)

问题:

  1. 这些步骤对于实现目标是否正确?或者需要一些修改?
  2. 我不确定如何实施所有这些步骤。 :-( 需要想法、链接...

任何帮助表示赞赏...


你正在尝试的事情并不容易,但它是可行的。请遵循以下准则:

  1. 使用ajax在客户端编写2个函数:

    • getUploadedPortionFromServer(filename)- 这将询问服务器文件是否存在,并且应该从服务器获得包含以下信息的 xml 响应:
      boolean(exist/not exist), size(bytes), md5(string)
      该函数还将在本地文件上运行与从服务器获取的相同大小的 md5,
      如果md5相同,则可以从停止的地方继续发送,
      elseif 不相同或大小 == 0,则重新开始。
    • uploadFromBytes(x)- 将取决于第一个功能。

  2. 在服务器上,您必须编写匹配函数,该函数将检查所需的内容,并通过 XML 将响应发送到客户端。

    • 为了拥有不同的文件名,您应该使用某种用户标记。
    • 用户是否登录到您的服务器?如果是这样,请使用附加到文件名的用户名的哈希值,这将帮助您区分文件。
    • 如果没有,请使用 cookie。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.Net:写入文件块..HTTP 文件上传与恢复 的相关文章