나는 C# 코드가 작은 텍스트 파일, 이미지 파일을 보낼 수 있어야합니다. , doc (모든 유형의 파일)을 사용합니다.HTTP POST를 사용하여 파일을 보내는 중 C#
답변
다음과 같은 코드를 시도 할 수 있습니다 :
public void PostMultipleFiles(string url, string[] files)
{
string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary;
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;
Stream memStream = new System.IO.MemoryStream();
byte[] boundarybytes =System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary +"\r\n");
string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}";
string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";
memStream.Write(boundarybytes, 0, boundarybytes.Length);
for (int i = 0; i < files.Length; i++)
{
string header = string.Format(headerTemplate, "file" + i, files[i]);
//string header = string.Format(headerTemplate, "uplTheFile", files[i]);
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
memStream.Write(headerbytes, 0, headerbytes.Length);
FileStream fileStream = new FileStream(files[i], FileMode.Open,
FileAccess.Read);
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
memStream.Write(buffer, 0, bytesRead);
}
memStream.Write(boundarybytes, 0, boundarybytes.Length);
fileStream.Close();
}
httpWebRequest.ContentLength = memStream.Length;
Stream requestStream = httpWebRequest.GetRequestStream();
memStream.Position = 0;
byte[] tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
memStream.Close();
requestStream.Write(tempBuffer, 0, tempBuffer.Length);
requestStream.Close();
try
{
WebResponse webResponse = httpWebRequest.GetResponse();
Stream stream = webResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string var = reader.ReadToEnd();
}
catch (Exception ex)
{
response.InnerHtml = ex.Message;
}
httpWebRequest = null;
}
그냥 50 줄의 코드를 버리는 것은 답이 아닙니다. 이 질문에 대한 답변이 많으며이 코드의 대부분은 WebClient 및 HttpClient와 같은 .NET 유형에 이미 내장되어 있습니다. – CodeCaster
수신자 페이지에서 검색 과정을 설명 할 수 있습니까? –
URL의 예를 들어 줄 수 있습니까? 파일 이름이 포함되어 있습니까? –
시도이 .NET 4.5 (또는 NuGet에서 Microsoft.Net.Http 패키지를 추가하여 .NET 4.0) 쉬운 방법으로이 사용
string fileToUpload = @"c:\user\test.txt";
string url = "http://example.com/upload";
using (var client = new WebClient())
{
byte[] result = client.UploadFile(url, fileToUpload);
string responseAsString = Encoding.Default.GetString(result);
}
양식 요청을 시뮬레이트합니다.
private System.IO.Stream Upload(string actionUrl, string paramString, Stream paramFileStream, byte [] paramFileBytes)
{
HttpContent stringContent = new StringContent(paramString);
HttpContent fileStreamContent = new StreamContent(paramFileStream);
HttpContent bytesContent = new ByteArrayContent(paramFileBytes);
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Add(stringContent, "param1", "param1");
formData.Add(fileStreamContent, "file1", "file1");
formData.Add(bytesContent, "file2", "file2");
var response = client.PostAsync(actionUrl, formData).Result;
if (!response.IsSuccessStatusCode)
{
return null;
}
return response.Content.ReadAsStreamAsync().Result;
}
}
항상 다중 부분 양식 데이터를 사용해야합니까? – Abhijeet
- 1. http post를 사용하여 서버로 파일을 보내는 방법. 설명?
- 2. http post를 사용하여 localhost에 파일을 업로드 하시겠습니까?
- 3. 각도기를 사용하여 POST를 보내는 방법
- 4. NSURLConnection을 사용하여 POST를 보내는 iPhone
- 5. NodeJS : Request POST를 통해 파일을 보내는 방법
- 6. HTTP POST를 사용하여 C 소켓 프로그래밍 프로그래밍
- 7. HTTP Post를 통해 파일을 다운로드하는 중 어디서 잘못 되었나요?
- 8. HTTP POST를 사용하여 API 쿼리
- 9. POST를 사용하여 JSON 객체를 보내는 동안 HTTP 415
- 10. POST를 통해 파일을 업로드하는 Java Http 클라이언트
- 11. C POST를 통해 HTTP POST를 사용하여 사진 파일을 업로드 할 때 파일 형식이 문제가 발생했습니다.
- 12. HTTP/POST를 사용하여 대용량 파일 전송
- 13. HTTP POST를 사용하여 연락처 업로드하기
- 14. 대기 응답없이 POST를 보내는 방법 C#
- 15. HTTP Post를 사용하여 Excel에서 Server로 데이터를 전송하는 중
- 16. jsoup를 사용하여 Android에서 POST를 보내는 방법은 무엇입니까?
- 17. POST를 사용하여 base64 문자열을 보내는 방법
- 18. HTTP-GET/POST를 보내는 응용 프로그램을 만드는 방법은 무엇입니까?
- 19. FileNotFoundException을 사용하여 웹 서비스에 POST를 보내는 HttpURLConnection
- 20. POST를 사용하여 HTTP 서버에 파일을 업로드하는 방법은 무엇입니까?
- 21. blackberry 5.0의 HTTP POST를 사용하여 오디오 파일을 업로드하는 방법은 무엇입니까?
- 22. POST를 사용하여 HTTP 서버의 파일을 업로드하면 HttpFileCollection에 0이 제공됩니까?
- 23. node.js를 통해 Django Web API로 HTTP POST를 보내는 것이 효율적입니까?
- 24. HTTP POST를 통한 업데이트
- 25. wget을 사용하여 파일을 보내는 방법
- 26. HTTP POST를 사용하는 HTTPS
- 27. Boost asio가 HTTP POST를 받습니까?
- 28. HTTP POST를 통해 예약 된 메시지를 보내는 방법은 무엇입니까?
- 29. 안드로이드로 HTTP POST를 통해 XML 데이터를 보내는 방법
- 30. 파일 업로드가 C++을 통해 HTTP POST를 사용하여 실패 함
http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data –
'나는 다른 방법을 시도했지만 그들 중 누구도 나에게 도움이되지 예를 들면 다음과 같습니다. '- 당신이 시도한 몇 가지 방법을 보여 주면, 우리는 그들에게 무엇이 잘못되었는지를 볼 수있을 것입니다. 지금 당장은 건설적인 토론이 어렵습니다. –
[C#으로 HTTP POST를 통해 파일 보내기] (http://stackoverflow.com/questions/1131425/send-a-file-via-http-post-with-c-sharp) 및 기타 여러 항목이 중복되었습니다. 당신이 시도한 것을 보여주고, 상향 자들, 당신이 상향 투표하는 질문이 그 사이트에 대한 환영의 추가인지 혹은 단지 중복인지를 고려하십시오. – CodeCaster