Ich möchte eine Datei mit HttpClient in ein PHP-Skript hochladen, um sie auf einem Server in einer Windows Phone 8.1-Anwendung zu speichern.Bild mit HttpClient hochladen
Hier ist mein C# -Code, den ich von this post bekommen habe.
private async Task<string> GetRawDataFromServer(byte[] data)
{
//Debug.WriteLine("byte[] data length:" + Convert.ToBase64String(data).Length);
var requestContent = new MultipartFormDataContent();
// here you can specify boundary if you need---^
var imageContent = new ByteArrayContent(data);
imageContent.Headers.ContentType =
MediaTypeHeaderValue.Parse("image/jpeg");
requestContent.Add(imageContent, "image", "image.jpg");
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://www.x.net/");
var result = client.PostAsync("test/fileupload.php", requestContent).Result;
return result.Content.ReadAsStringAsync().Result;
}
}
Und mit diesem Code abrufen ich die Daten in der PHP-Skript
<?
function base64_to_image($imageData, $outputfile) {
/* encode & write data (binary) */
$ifp = fopen($outputfile, "wb");
fwrite($ifp, base64_decode($imageData));
fclose($ifp);
/* return output filename */
return($outputfile);
}
if (isset($_POST['image'])) {
base64_to_jpeg($_POST['image'], "image.jpg");
}
else
die("no image data found");
?>
Aber das Ergebnis bekomme ich immer „Keine Daten gefunden“ obwohl Datei ein Bild ist. Mache ich etwas falsch, indem ich es als POST-Parameter übergebe?
Für eine Sache, anstatt ".Result" für die Async-Methoden zu verwenden, sollten Sie stattdessen "erwarten" (der Compiler sollte Sie gewarnt haben, dass Sie Async falsch verwendet haben). Haben Sie eine Netzwerkverfolgung durchgeführt, um zu sehen, was über die Leitung gesendet wird? –
Nein, um ehrlich zu sein, ich weiß nicht, wie ich das machen soll. – Elektropepi