Tôi có một ứng dụng web nhỏ C#. Làm cách nào để nhận được mã C# cho phép người dùng gửi tệp bằng HTTP POST. Nó có thể gửi tệp văn bản, tệp hình ảnh, excel, csv , doc (tất cả các loại tệp) mà không cần sử dụng trình đọc luồng và tất cả.Gửi tập tin bằng cách sử dụng HTTP POST trong C#
Trả lời
Bạn có thể thử đoạn mã sau:
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;
}
Chỉ cần bán phá giá 50 dòng mã không phải là câu trả lời. Có rất nhiều câu trả lời cho câu hỏi này và nhiều người trong số các mã này là (nhiều lỗi bằng chứng quá) đã được xây dựng trong các loại. NET, như WebClient và HttpClient. – CodeCaster
Bạn có thể giải thích quá trình truy xuất từ trang người nhận không. –
bạn có thể đưa ra ví dụ về url .. nó có chứa tên tệp không? –
thử này
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);
}
Sử dụng .NET 4.5 (hoặc .NET 4.0 bằng cách thêm các gói Microsoft.Net.Http từ NuGet) có một cách dễ dàng hơn để mô phỏng các yêu cầu biểu mẫu. Dưới đây là một ví dụ:
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;
}
}
Có bắt buộc phải sử dụng dữ liệu biểu mẫu nhiều phần không? – Abhijeet
- 1. Gửi một tập tin qua HTTP POST với C#
- 2. Gửi tập tin hình ảnh bằng cách sử dụng các kết nối HTTP HTTP HTTP
- 3. Gửi hình ảnh bằng cách sử dụng Http Post
- 4. Gửi một tập tin qua POST sử dụng HTTP thô (Putty)
- 5. Cách gửi Yêu cầu POST HTTP trong Delphi bằng cách sử dụng WinInet api
- 6. HTTP POST bằng cách sử dụng JSON trong Java
- 7. gửi đối tượng json bằng cách sử dụng phương thức http post cho ứng dụng android
- 8. gửi dữ liệu XML sử dụng HTTP POST với PHP
- 9. Cách gửi yêu cầu HTTP POST bằng nội dung gzip?
- 10. Gửi yêu cầu POST qua HTTP bằng cách sử dụng Safari trên máy Mac
- 11. Gửi HTTP POST với System.Net.WebClient
- 12. giải nén một tập tin bằng cách sử dụng C#
- 13. Làm thế nào để gửi HTTP HTTP bằng cách sử dụng NameValuePair?
- 14. Gửi POST với WebClient.DownloadString trong C#
- 15. Gửi yêu cầu HTTP và nhận phản hồi HTTP bằng cách sử dụng javascript
- 16. Cách gửi yêu cầu HTTP POST và nhận phản hồi?
- 17. RAW POST bằng cách sử dụng cURL trong PHP
- 18. Yêu cầu POST HTTP trong Tập lệnh Thiết lập Inno
- 19. Gửi yêu cầu HTTP POST trong iOS với JSON
- 20. gửi cookie với http post android
- 21. Gửi XML qua HTTP Post tới IP: Cổng
- 22. Gửi tin nhắn SM5100B bằng cách sử dụng cutecom
- 23. Cách gửi tệp qua HTTP, cách tốt, sử dụng Python?
- 24. Cách gửi NSData bằng POST từ ứng dụng iOS?
- 25. Gửi tệp bằng POST từ tập lệnh Python
- 26. HTTP POST và GET bằng cách sử dụng cURL trong Linux
- 27. Cách POST XML bằng cách sử dụng RestTemplate
- 28. Nhận địa chỉ IP từ yêu cầu HTTP POST bằng cách sử dụng Python
- 29. Thực hiện yêu cầu HTTP POST bằng cách sử dụng Arduino
- 30. redirect_to bằng cách sử dụng POST trong đường ray
http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data –
'Tôi đã thử phương pháp khác nhau nhưng không ai trong số họ đã giúp tôi. '- nếu bạn cho thấy một số phương pháp bạn đã thử, chúng tôi có thể thấy có gì sai với chúng. Ngay bây giờ, thật khó để có một cuộc thảo luận mang tính xây dựng. –
Bản sao của [Gửi tệp qua HTTP POST với C#] (http://stackoverflow.com/questions/1131425/send-a-file-via-http-post-with-c-sharp) và nhiều người khác. Hiển thị những gì bạn đã thử, và upvoters, xin vui lòng xem xét cho dù một câu hỏi bạn upvoting là một bổ sung chào mừng đến trang web hoặc chỉ là một bản sao. – CodeCaster