Ich habe eine kleine C# -Web-Anwendung.Wie bekomme ich den C# -Code, der Benutzer ermöglicht, Dateien per HTTP-POST zu senden.Es sollte in der Lage sein, Textdateien, Bilddateien, Excel, CSV zu senden , doc (alle Arten von Dateien) ohne Stream Reader und alle zu verwenden.Senden von Dateien mit HTTP-POST in C#
Antwort
können Sie versuchen, den folgenden Code:
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;
}
Dumping nur 50 Zeilen Code ist keine Antwort. Es gibt viele Antworten auf diese Frage und viele von diesem Code sind (auch fehlersicherer) bereits in .NET-Typen eingebaut, wie der WebClient und der HttpClient. – CodeCaster
Können Sie einfach den Abrufvorgang von der Empfängerseite aus erklären. –
könnten Sie ein Beispiel für die URL geben .. enthält es den Dateinamen? –
versuchen diese
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);
}
.NET 4.5 (von oder .NET 4.0 Hinzufügen des Microsoft.Net.Http Paket von NuGet) Mit Hilfe gibt es einen einfacheren Weg zu Simulieren von Formularanforderungen Hier ein Beispiel:
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;
}
}
Muss man immer mehrteilige Formulardaten verwenden? – Abhijeet
- 1. Datei wird nach dem Senden mit HttpPost
- 2. Senden von JSONObject über HTTPpost in einem definierten Format?
- 3. einen String auf Android Senden mit Httppost ohne nameValuePairs mit
- 4. Senden von Dateien mit Httpwebrequest
- 5. Java - Android kann keine Daten mit httpPost senden
- 6. Senden von Sparse-Dateien
- 7. httppost action in mvc
- 8. Importieren von Dateien mit Angular.js und C#
- 9. Datei-Upload mit httppost android
- 10. Senden von Dateien in Chunks an HttpHandler
- 11. Parse Xml von httppost Antwort
- 12. das Hochladen von Dateien mit Httpsendrequest C++
- 13. Graf von Dateien in C# mit LINQ
- 14. Formular nicht senden von Dateien
- 15. Senden von Dateien über PSSession
- 16. MVC - Zurückgeben von Dateiattributen in CSHTML von Azure httppost
- 17. Erstellen von Dateien in C++
- 18. Locking Dateien in Linux mit C/C++
- 19. Senden von Tastatureingabedaten über Socket mit C++
- 20. MVC HttpGet und HttpPost
- 21. Senden von E-Mail mit C#
- 22. Problem Senden von E-Mail mit C#
- 23. HttpPost 500 Fehler. (SimpleCode)
- 24. HttpPost nicht korrekt posten
- 25. TransactionScope mit Dateien in C#
- 26. Löschen von Dateien von FTP in C#
- 27. Wie bekomme ich Antwort von HttpPost
- 28. Asynchrones Senden von E-Mails in C#?
- 29. HttpPost funktioniert nicht!
- 30. C# Senden von E-Ausfälle
http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data –
'Ich habe verschiedene Methoden ausprobiert, aber keiner von ihnen hat mir geholfen. '- Wenn Sie einige der Methoden gezeigt haben, die Sie versucht haben, können wir sehen, was mit ihnen nicht stimmt. Gerade jetzt ist es schwierig, eine konstruktive Diskussion zu führen. –
Duplizieren von [Senden Sie eine Datei über HTTP POST mit C#] (http://stackoverflow.com/questions/1131425/send-a-file-via-http-post-with-c-sharp) und verschiedene andere. Zeigen Sie, was Sie versucht haben, und Upvoter, bitte überlegen Sie, ob eine Frage, die Sie upvotieren, eine willkommene Ergänzung der Seite oder nur ein Duplikat ist. – CodeCaster