Сейчас я делаю проект на Xamarin.Forms в Visual Studio 2017. Я пытаюсь загрузить изображение с помощью HttpClient и опубликовать файл с помощью php-кода в директории моего сервера.Но код ниже здесь все еще не работает.
Я могу получить фотографию и показать в своем приложении, но не могу загрузить на сервер!
Пожалуйста, помогите!
C # файл
async Task GetPhoto(Func<Task<MediaFile>> getPhotoFunc)
{
IsEnabled = false;
try
{
var photo = await getPhotoFunc();
if (photo == null)
return;
Image = null;
AllPredictions = new List<PredictionModel>();
Image = SKBitmap.Decode(photo.GetStreamWithImageRotatedForExternalStorage());
await PredictPhoto(photo);
IsEnabled = true;
byte[] bitmapData;
var stream = new MemoryStream();
photo.GetStream().CopyTo(stream);
bitmapData = stream.ToArray();
var fileContent = new ByteArrayContent(bitmapData);
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file",
FileName = "image_test.jpg"
};
string boundary = "---8393774hhy37373773";
MultipartFormDataContent multipartContent = new MultipartFormDataContent(boundary);
multipartContent.Add(fileContent);
HttpClientHandler clientHandler = new HttpClientHandler();
HttpClient httpClient = new HttpClient(clientHandler);
HttpResponseMessage response = await httpClient.PostAsync("http://it2.sut.ac.th/project61_g23/php/upload-image.php", multipartContent);
response.EnsureSuccessStatusCode();
}
catch (Exception ex)
{
Crashes.TrackError(ex, new Dictionary<string, string> { { "Action", "Getting predictions" } });
await Application.Current.MainPage.DisplayAlert("Error", $"An error occured: {ex.Message}", "OK");
}
finally
{
IsEnabled = true;
}
}
PHP-код
<code><?php
$uploaddir = '/Uploads/';
$uploadfile = $uploaddir.basename($_FILES['file']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
echo '
';?>