2009-09-28 9 views
3

동적 다운로드 링크가있는 몇 개의 웹 사이트를 보았습니다.동적 다운로드 링크 알고리즘

유효한 이메일 주소를 요청하고 동적으로 생성 된 다운로드 링크를 해당 주소로 보냅니다. E.X. www.mysite.domain/hashvalue1

파일은 특정 위치의 도메인에 있기 때문에 어떻게 표시합니까? www.mysite.domain/downloads

이 안내서가 있습니까?

답변

3

예, 웹 URL이 실제 파일 위치와 일치 할 필요는 없습니다. .NET에서이를 구현하는 가장 쉬운 방법은 해시 값을 기반으로 Response.TransmitFile을 사용하는 IHttpHandler를 만드는 것입니다.

이 경우 URL은 www.mysite.domain/file.ashx? hash = hashvalue1이됩니다.

라우팅 (ASP.NET 3.5 SP1) 또는 URL 재 작성기를 사용하면 더 나은 URL을 얻을 수 있습니다.

4

"UrlRewrite"와 ASP.NET HttpHandler를 사용합니다.

UrlRewrite : http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

처리기 : Downlaod.ashx

using System; 
using System.Web; 

public class GetDownload : IHttpHandler 
{ 
    private static string file = "your file location"; 
    public void ProcessRequest (HttpContext context) 
    { 
     if(UsersHasRights(context)) 
     { 
      context.Response.TransmitFile(file); 
     } 
    } 

    public bool IsReusable 
    { 
     get { return false; } 
    } 
} 
0

이것은 할 가장 효율적인 또는 가장 좋은 방법하지 않을 수 있지만, 문제를 해결할 수 있습니다. 서버의 특정 위치에 파일이 있으며 사용자가 다운로드를 요청하거나 클릭하면이를 알 수 있습니다. 당신은 전자 메일 주소를 얻고 함께 파일 이름이나 경로 및 전자 메일 해시를 만들면 동일한 사용자가 동일한 파일을 반복해서 요청하더라도 실제로 무작위로 추출 할 수 있습니다. 이제이 해시, 파일 이름 및 소금 (있는 경우)을 데이터베이스 테이블에 넣으십시오. 또한 링크의 만료일을 가질 수 있습니다.

이 site.com/files.dld?hash와 같은 사용자 링크를 보내고 IHttpHandler를 구현하여이 확장자 (Andrey Shchekin의 answer 참조)를 처리 할 수 ​​있습니다. Zip 파일을 다운로드하기 위해 HttpHandler를 사용하는 방법을 설명하는 article도 있습니다.