2012-06-21 3 views
0

나는 동적 테이블을 가지고 있고 모든 것이 잘 작동하는 행을 만드는 중이다. 셀 중 하나에서 클릭했을 때 파일을 열 링크를 만들려고합니다. 하지만 링크를 클릭하면 파일 서버를 찾을 수 없다는 오류 메시지가 나타납니다. 그런 다음 파일을 확인하기 위해 주소 표시 줄에 위치를 입력하면 주소가 변경되지만 주소는 (file : /// c : /inetpub/wwwroot/test1.txt)로 변경됩니다. 그래서 제가 한 일은 그 주소를 앵커 태그에 넣었습니다.하지만 여전히 그 주소는 앵커 태그에 넣어졌습니다. 여기까지 내가 지금까지 가지고있는 것이있다. 어떤 도움을 주시면 감사하겠습니다.앵커 태그를 사용하여 파일을 여는 방법

tblrow = New TableHeaderRow 
tblcell = New TableHeaderCell 
tblcell.Text = "<a href='C://inetpub/wwwroot/test1.txt' target='_blank'>" & Test & "</a>" 
tblrow.Cells.Add(tblcell) 
tableName.Rows.Add(tblrow) 

답변

4

실제 경로가 아닌 URL을 사용하십시오.

절대 URL 위치

<a href='http://DOMAIN/test1.txt' target='_blank'> 

또는 상대 URL 위치로 변경

<a href='C://inetpub/wwwroot/test1.txt' target='_blank'> 

파일이 사이트에있는 경우

<a href='RELATIVE_PATH/test1.txt' target='_blank'> 
0
  1. 의 대부분을 OS가 직접 파일 호출을 지원하지 않기 때문에 보안상의 이유로 temp 위치를 사용하거나 서버에서 파일을로드해야합니다.

  2. 파일은 가상 디렉터리에 있어야하며 다른 URL은 전체 게시물이어야합니다.

0

비동기 처리기 (ASP.NET)를 사용하여 파일을 다운로드해야합니다. 궁극적으로 앵커가 브라우저에서 다른 요청을 시작하면 해당 요청이 파일을 사용자에게 다운로드합니다.

여기 MSDN의 정보가 담긴 기사입니다.

public void ProcessRequest(HttpContext context) { 
    // read input etx 
    context.Response.Buffer = false; 
    context.Response.ContentType = "text/plain"; 
    string path = @"c:\somefile.txt"; 
    FileInfo file = new FileInfo(path); 
    int len = (int)file.Length, bytes; 
    context.Response.AppendHeader("content-length", len.ToString()); 
    byte[] buffer = new byte[1024]; 
    Stream outStream = context.Response.OutputStream; 
    using(Stream stream = File.OpenRead(path)) { 
     while (len > 0 && (bytes = 
      stream.Read(buffer, 0, buffer.Length)) > 0) 
      { 
       outStream.Write(buffer, 0, bytes); 
       len -= bytes; 
      } 
    } 
} 

희망이

+0

코드는 여기에서 차용되었다 도움 : http://stackoverflow.com/questions/608480/best 여기

당신이 핸들러에 쓸 것입니다 무슨의 코드 샘플입니다 -way-to-stream-files-in-asp-net –

관련 문제