2012-10-24 2 views
0

안녕하세요, 내 웹 사이트의 사용자가 버튼을 클릭하면 파일이 PC로 다운로드 될 때 다운로드 기능을 작성해야합니다.웹 서버의 파일 다운로드 기능을 클라이언트 PC에 작성합니다.

난 다음 파일을 다운로드 할 수있는 링크로 사용하는 경우 :

http://formvalue.co.za/download/" + fileName + ".xlsx" 

하지만 난 그 후 어떤 일이 수행하지 못할, 그래서 오프 파일을 삭제할 수 있도록 내가하는 기능이 필요 내 서버를 다운로드 한 후

MVC를 사용 중이므로 함수가 Jquery 또는 C#에있을 수 있습니다.

아무도 도와 줄 수 있습니까? 정보가 필요하면 사전에 고마워하십시오.

+0

링크가 정확한 형식과 일치해야합니까? 이게 효과가 있니? http://formvalue.co.za/download?file=whatever.xlsx – Nuzzolilo

+0

무엇을할까요?/할 대신에? – Pomster

+0

그 자체로는 아무 것도 없습니다. 직접적인 질문이었습니다 ... – Nuzzolilo

답변

1

단순히 서버에 다시 게시하고 다음 메소드를 호출하는 LinkButton을 사용할 수 있습니까?

internal static void ContentToBrowser(string contentType, string filename, string content) 
     // Send to browser 
     var response = HttpContext.Current.Response; 
     response.Clear(); 
     response.ContentType = contentType; 
     response.AddHeader("Content-Disposition", 
        String.Format("attachment; filename=\"{0}\"", filename)); 
     var contentLength = response.ContentEncoding.GetByteCount(content); 
     response.AddHeader("Content-Length", contentLength.ToString()); 
     response.Write(content); 
     response.End(); 
} 

이렇게하면 서버에 저장하는 것에 대해 걱정할 필요없이 필요한 콘텐츠를 클라이언트에 바로 쓸 수 있습니다. 예 :

protected void LinkButtonClick(object sender, EventArgs e) 
{ 
    string filename = @"c:\filepath\blah.xlsx"; 
    string content = File.ReadAllText(filename); 
    ContentToBrowser("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "downloaded-blah.xlsx", content); 
    File.Delete(filename); 
} 

그러나 나중에 파일을 삭제할 동기가 무엇인지 질문해야합니다. 클라이언트가 성공적으로 다운로드하여 저장했음을 어떻게 알 수 있습니까?

+0

하지만 파일이 내 서버에 있습니다. 클라이언트에 다운로드하고 싶습니다.이 코드의 기능을 잘 모르시겠습니까? – Pomster

+0

위의 코드는 지정된 filename 및 contentType을 사용하여 클라이언트의 파일 내용을 직접 클라이언트에 다시 작성합니다. 파일이 서버에 있으면 파일에서 읽을 수 있고이 방법을 사용하여 클라이언트에 반환하고 나중에 삭제할 수 있습니다. – CalC

+0

그러면 contentType과 내용은 무엇이됩니까? – Pomster

관련 문제