나는이 파일을 전송하기위한 최소한의 생각 :
using (var fileStream = File.Open(@"\file.txt", FileMode.Open, FileAccess.Read, FileShare.Read))
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.destination.com/path");
request.Method = "POST"; // or PUT, depending on what the server expects
request.ContentLength = fileStream.Length; // see the note below
using (var requestStream = request.GetRequestStream())
{
int bytes;
byte[] buffer = new byte[1024]; // any reasonable buffer size will do
while ((bytes = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
requestStream.Write(buffer, 0, bytes);
}
}
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
}
}
catch (WebException ex)
{
// failure
}
}
참고 : HTTP 당신이 데이터를 전송 "할"때 알 수있는 방법이 필요합니다.
- 의 예에서 사용 된 우리가 설정 아무것도
request.SendChunked
을 보내기 전에 파일의 크기를 알고 있기 때문에, request.ContentLength
을 설정, 개별 크기 를 포함하는 데이터의 덩어리를 보내는이를 달성하기 위해 세 가지 방법이 있습니다
- 도 메모리 버퍼에 쓰기 위해
request.AllowWriteStreamBuffering
을 설정할 수 있지만 컴팩트 프레임 워크에 많은 메모리를 낭비하지 않는 것이 좋습니다.
다른 질문/사이트에 대한 제안과 함께 작동하지 않는 것을 지정할 수 있습니까? 그렇지 않으면 여기에있는 답변이 귀하에게 적합하지 않을 수도 있습니다. –
물론 - XML 또는 텍스트 파일을 보내는 곳을 몇 개 보았습니다.이 파일은 문자열로 일련 번호가 매겨졌습니다. 또는 데이터 구조를 파일로 직렬화하는 일부 (protobuf와 유사). 필자도 멀티 파트 프로토콜을 사용하는 곳을 보았지만 컴팩트 한 프레임 워크는이를 지원하지 않습니다. – Kyver
대부분의 예제는'multipart/form-data'를 포함합니다. 코드를 직접 코딩 할 수는 있지만 실제로 파일을 전송할 필요는 없습니다. 나는 그 예를 올릴 것이다. –