0

我想创建一个网站来下载一些文件(pdf、word、xls,例如这些文件),每个文件都有 pice,例如 a.pdf 是 10 美元,b.pdf id 是 20 美元。例如用户“x”有 12 美元,我怎样才能阻止这个用户下载文件 b.pdf ?请给我建议。您知道我知道我可以拥有可以访问文件夹的角色的会员系统,但是文件呢?或者你认为我不需要注册用户他们可以为每个文件支付在线价格,例如你选择一个.pdf,你将连接到贝宝或其他人,你会支付,如果你支付链接将显示但是怎么样如果用户复制链接并将其发送给他/她的朋友?谢谢

4

4 回答 4

5

您应该将文件从 Web 根目录中删除(这样它们就不能通过 URL 访问)。

然后,您可以编写一个带有文件名的 ASHX 文件或 MVC 操作,检查是否允许登录用户访问它,如果允许,则通过调用Response.TransmitFile.

于 2012-06-12T13:17:38.397 回答
2

为此,我将使用通用处理程序,就像 SLaks 建议的那样:添加新 -> 通用处理程序 (.ashx) 文件。然后在处理程序类中:

public class CustomImageHandler : IHttpHandler
{
        public void ProcessRequest(HttpContext context)
        {
            //Get file name from query string and check balance for that file extension... read the file into aStream

            context.Response.Clear();
            context.Response.ContentType = "image/...";
            context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", GetTheFileName()));
            context.Response.BinaryWrite(aStream.ToArray());
        }
}

然后图像超链接是:

http://yourdomain.path/../CustomImageHandler.ashx?filename=file1.pdf

于 2012-06-12T13:28:42.430 回答
2

您可以有一个接受文件 id 作为 GET 参数的页面,并让后面的代码检查他们的余额。

于 2012-06-12T13:16:53.637 回答
0

我想我在交易成功完成时得到了它,它将返回 true,我可以检查返回的值是否为 true,文件 cqn 将与当前用户一起下载。感谢您的帮助:x

于 2012-06-12T13:24:18.640 回答