2012-08-28 137 views
1

我正在編寫一個應用程序來編輯mp3文件。編輯完成後,我想提供一個鏈接來下載文件。我只是擔心文件位置(如果知道)可能會被濫用於非法文件。我需要做的是,我不需要在服務器上顯示指向文件的鏈接,而是可以將其存儲在內存中(我已經使用taglib),然後將下載流傳送到服務器上,而不必將其存儲在服務器上。asp.net隱藏下載

+1

如何將文件存儲在內存中防止鏈接內容被「濫用於非法文件」? –

+0

@JonathanWood我認爲這個想法是由UserA生成的內容不應該由UserB下載。 – Servy

+0

我將問題從「是/否」改爲「如何」。第一個問題的答案是「是」,我認爲這不是對你的充分答案。 – Servy

回答

2

您需要使用HTTP處理程序將文件寫入用戶,同時屏蔽服務器上文件的真實位置。這將使您能夠執行任何關於下載文件的規則,例如一次下載。

參見:How to create an HTTP Handler

處理程序中的代碼必須是唯一的你的需求,而是沿着以下的說法應該有所幫助:

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.ContentType = "Application/mp3"; 
    context.Response.AppendHeader("Content-Disposition", "attachment; filename=mysong.mp3"); 
    context.Response.TransmitFile(Server.MapPath("~/Files/song.mp3")); 
} 

你可以在情況下使用Stream你不不想在任何地方保存實際的文件,但這應該讓你開始。

+0

發送一個文件謝謝你的代碼。有一個問題,有趣的是你提到了一次下載..這確實是我想要的..你可以建議如何實現這個目標嗎? – pessi

+0

您需要添加一些邏輯來確定是否允許用戶下載文件。例如,您可以向DB添加一條記錄,表示用戶下載文件並在傳輸文件之前檢查該記錄。 –

+0

明白了。謝謝.. – pessi