【问题标题】:ASP.Net: Writing chunks of file..HTTP File upload with resumeASP.Net:编写文件块..HTTP 文件上传与简历
【发布时间】:2011-01-05 09:46:36
【问题描述】:

请参考问题:Resume in upload file control

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

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

我想到的程序是:

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

问题:

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

任何帮助表示赞赏...

【问题讨论】:

  • 你完成过这个吗?如果是这样,你能发布你的发现吗?

标签: c# .net asp.net file-upload


【解决方案1】:

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

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

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

  2. 在服务器上你必须编写匹配函数,它会检查需要的东西,并通过 XML 将响应发送给客户端。

    • 为了有不同的文件名,您应该使用某种用户标记。
    • 用户是否登录到您的服务器?如果是这样,请使用附加到文件名的用户名哈希,这将帮助您区分文件。
    • 如果没有,请使用 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2016-01-02
    • 2012-12-18
    • 2016-10-09
    • 2010-09-16
    • 2011-04-30
    相关资源
    最近更新 更多