Aspnet

C# 서버에서 파일을 다운로드할 때 TransmitFile, WriteFile, WriteFile, streaming 등 네 가지 방법을 사용하여 파일을 다운로드하고 적절한 유형으로 저장할 수 있습니다.

1, transmile Void? Button1 _ click (개체? Sender,? EventArgs? E)

{

/*?

Microsoft 는 Response.binarywrite 사용을 해결하기 위해 response 개체에 대한 새로운 TransmitFile 방법을 제공합니다.

4mb 가 넘는 파일을 다운로드할 때 Aspnet_wp.exe 프로세스가 재활용되어 성공적으로 다운로드할 수 없는 문제가 발생합니다. -응?

코드는 다음과 같습니다.

*/?

Response.ContentType? =? 응용 프로그램/x-zip-compressed;

response.addheader ("content-disposition",? "attachment; Filename=z.zip ");

string? 파일 이름? =? Server.MapPath("DownLoad/z.zip ");

response.transmitfile (파일 이름);

}

2, WriteFile 구현 다운로드 protected? Void? Button2 _ click (개체? Sender,? EventArgs? E)

{

/*?

using? System.IO;

*/

string? 파일 이름? =? "asd.txt"; //클라이언트가 저장한 파일 이름?

string? 파일 경로? =? Server.mappath ("download/aaa.txt"); //경로

FileInfo? FileInfo? =? 새? Fileinfo (파일 경로);

Response.Clear ();

Response.ClearContent ();

Response.ClearHeaders ();

response.addheader ("content-disposition",? "attachment; Filename= "? +? FileName);

response.addheader ("content-length",? FileInfo.Length.ToString ());

response.addheader ("content-transfer-encoding",? "비나리");

Response.ContentType? =? 응용 프로그램/octet-stream;

Response.ContentEncoding? =? System.text.encoding.getencoding ("gb2312");

response.writefile (fileinfo.fullname);

Response.Flush ();

Response.End ();

}

3, WriteFile 블록 다운로드? Protected? Void? Button3 _ click (개체? Sender,? EventArgs? E)

{

문자열? 파일 이름? =? "aaa.txt"; //클라이언트가 저장한 파일 이름?

string? 파일 경로? =? Server.mappath ("download/aaa.txt"); //경로

System.IO.FileInfo? FileInfo? =? 새? System.io.fileinfo (파일 경로);

if? (fileInfo.Exists? = =? 참)

{

const? 롱? ChunkSize? =? 124; //1K? 매번 파일을 읽을 때마다 1K 만 읽는데, 이렇게 하면 서버의 스트레스를 완화할 수 있습니까?

byte[]? 버퍼? =? 새? Byte[ChunkSize];

Response.Clear ();

System.IO.FileStream? IStream? =? System.io.file.openread (파일 경로);

long? DataLengthToRead? =? IStream.Length; //다운로드한 파일의 총 크기를 가져오시겠습니까?

Response.ContentType? =? 응용 프로그램/octet-stream;

response.addheader ("content-disposition",? "attachment; -응? Filename= "? +? Httputility.urlencode (파일 이름));

while? (dataLengthToRead? > -응? ? & & -응? Response.isclientconnected)

{

int? LengthRead? =? IStream.Read(buffer,? ,? Convert.ToInt32(ChunkSize)); //읽은 크기?

response.outputstream.write (buffer,? ,? LengthRead);

Response.Flush ();

dataLengthToRead? =? DataLengthToRead? -응? LengthRead;

}

Response.Close ();

}

}

4, protected 스트리밍 다운로드? Void? Button4 _ click (개체? Sender,? EventArgs? E)

{

문자열? 파일 이름? =? "aaa.txt"; //클라이언트가 저장한 파일 이름?

string? 파일 경로? =? Server.mappath ("download/aaa.txt"); //경로

// 문자 스트림으로 파일 다운로드?

FileStream? Fs? =? 새? Filestream (파일 경로,? FileMode.Open);

byte[]? 바이트? =? 새? Byte[(int)fs.Length];

fs.Read(bytes,? ,? Bytes.Length);

fs.Close ();

Response.ContentType? =? 응용 프로그램/octet-stream;

// 파일을 열지 않고 다운로드하도록 브라우저에 알리시겠습니까?

response.addheader ("content-disposition",? "attachment; -응? Filename= "? +? Httputility.urlencode (파일 이름,? System.Text.Encoding.UTF8);

Response.BinaryWrite(bytes);

Response.Flush ();

Response.End ();

}

上篇: 동물의 숲 2022에서도 시간을 조정할 수 있나요? 下篇: F6F 헬캣 전투기 소개
관련 내용