在asp.net web api上生成一个独特的下载链接

时间:2012-10-23 04:21:11

标签: asp.net download asp.net-web-api

如何在Asp.net api上生成文件的唯一下载链接?我想通过webservice提供下载功能,每个用户一次只能获得一个独特的下载链接。

更新:

  • 我不想浪费用户登录的时间。
  • 一个用户可以下载多个文件。
  • 文件类型可以是xml,图像,文本和声音文件。

    我正在尝试开发销售电子书的应用程序。

非常感谢

1 个答案:

答案 0 :(得分:1)

您能否详细说明您的目标是什么?

  1. 我想知道用户是否已注册?
  2. 同一位用户会下载多个文件吗?
  3. 什么类型的文件?
  4. 您可以告诉我们的任何其他情况?

    根据您的情况,它可能不会在很多方面。

    寻找这个例子&会发给你更多 http://support.microsoft.com/kb/306654

    如果适合您的情况,可以采取一种方式

    虽然您可以使用GUID并可能将其与数据库中的用户相关联,但您需要创建一些关于应用程序如何排除GUID的业务逻辑。例如,您可能会说UserA具有GUID,如果在接下来的15分钟内使用该GUID,则UserA会自动登录,但在15分钟后强制用户使用用户名和密码。

    类似地,您可以创建一个查询字符串,例如u = UserA& time = 1347& date = 01282001,然后通过某种哈希运行它。当它重新进入时,取消它(因此你不能使用MD5),检查时间戳并查看自创建时间戳以来已经存在多长时间。如果它在可接受的时间范围内,请让用户输入,如果不强制他们使用用户名和密码。这不需要您在数据库中与您的用户进行任何关联,因此与GUID相比可能是一个更简单的解决方案。

    更新:如果我必须这样做,那么我将采取以下方法。您可以自行决定如何保护这些文件不被下载。

    第1步:我将创建一个新表&用户付款后生成GUID&商店guid& userID,此表中的BookID信息。现在,您可以根据此信息生成链接

    http://www.xyz.com/download.aspx?BookID=XX&UserID=XXX&GUID=guid-guid-guid-guid-guid-guid
    

    步骤2:创建HTTPHandler以检查上面创建的表中是否存在此类记录,如果是,则允许用户下载该书,否则他将无法下载该书。

    您可以将所有可下载文件保存在FOLDER下,该用户无权直接访问。

    我希望你能理解我想说的话。

    我会这样做,我可以将所有文件保存在受保护的文件夹中,也可以将它们存储在DATABASE中。

    我希望这会给你一个起点。