Heim >Backend-Entwicklung >PHP-Tutorial >Wie lade ich Dateien erfolgreich hoch und übergebe zusätzliche Parameter mit HTTP POST Multipart/Form-Data in Windows Phone 8?

Wie lade ich Dateien erfolgreich hoch und übergebe zusätzliche Parameter mit HTTP POST Multipart/Form-Data in Windows Phone 8?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 00:19:10792Durchsuche

How to Successfully Upload Files and Pass Additional Parameters with HTTP POST Multipart/Form-Data in Windows Phone 8?

Hochladen von Dateien mit HTTP POST Multipart/Form-Data in Windows Phone 8

Bei der Entwicklung von Windows Phone 8-Anwendungen ist es üblich, Dateien auf einen Server hochzuladen. Dies kann mithilfe von HTTP POST mit dem MIME-Typ multipart/form-data erreicht werden. Es gibt jedoch spezielle Überlegungen für Windows Phone 8.

Codebeispiel und Fehlererklärung

Das bereitgestellte Codebeispiel versucht, eine Datei hochzuladen und einen Zeichenfolgenparameter („userid=SOME_ID“) zu übergeben HTTP POST Multipart/Formulardaten. Es tritt jedoch ein Problem auf, bei dem die Datei nicht erfolgreich hochgeladen werden kann.

Das spezifische Problem liegt in der GetRequestStreamCallback-Methode. Der Anforderungsstream wird mit request.EndGetRequestStream(asynchronousResult) abgerufen, aber der Parameter „userid=some_user_id“ wird der Anforderung nicht hinzugefügt.

Übergabe zusätzlicher Parameter

Zur Übergabe zusätzlicher Parameter wie „ userid“ ist es notwendig, eine Grenze für die Multipart-/Formulardatenanforderung zu erstellen. Diese Grenze trennt die verschiedenen Teile der Anfrage (Datei und zusätzliche Parameter).

Verbessertes Codebeispiel

Hier ist ein verbessertes Codebeispiel, das mehrteilige/Formulardatenanfragen ordnungsgemäß verarbeitet und zusätzliche Parameter übergibt:

private void HttpPost(byte[] fileBytes, string additionalParam)
{
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");
    httpWebRequest.ContentType = "multipart/form-data; boundary=---------------------------" + DateTime.Now.Ticks.ToString("x");
    httpWebRequest.Method = "POST";
    var asyncResult = httpWebRequest.BeginGetRequestStream((ar) => { GetRequestStreamCallback(ar, fileBytes, additionalParam); }, httpWebRequest);  
}

private void GetRequestStreamCallback(IAsyncResult asynchronousResult, byte[] postData, string additionalParam)  
{
    HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;  
    Stream postStream = request.EndGetRequestStream(asynchronousResult); 

    // Create boundary start string
    string boundaryStart = "--" + request.ContentType.Substring(request.ContentType.IndexOf('=') + 1);

    // Write file content
    string fileBoundary = boundaryStart + Environment.NewLine + "Content-Disposition: form-data; name=\"file\"; filename=\"myfile.db\"" + Environment.NewLine + "Content-Type: application/octet-stream" + Environment.NewLine + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(fileBoundary), 0, fileBoundary.Length);   
    postStream.Write(postData, 0, postData.Length);  

    // Write additional parameter
    string paramBoundary = Environment.NewLine + boundaryStart + Environment.NewLine + "Content-Disposition: form-data; name=\"userid\"" + Environment.NewLine + Environment.NewLine + additionalParam + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(paramBoundary), 0, paramBoundary.Length);   

    // Write boundary end string
    string boundaryEnd = Environment.NewLine + "--" + request.ContentType.Substring(request.ContentType.IndexOf('=') + 1) + "--" + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(boundaryEnd), 0, boundaryEnd.Length);  

    postStream.Close();  
    var asyncResult = request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);  
}  

Wenn Sie diese Richtlinien befolgen, können Sie Dateien erfolgreich auf einen Server hochladen und zusätzliche Parameter mithilfe von HTTP POST Multipart/Formulardaten in Windows Phone 8 übergeben Anwendungen.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien erfolgreich hoch und übergebe zusätzliche Parameter mit HTTP POST Multipart/Form-Data in Windows Phone 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn