Xamarin.forms загружает изображение в каталог сервера, используя php - PullRequest
0 голосов
/ 02 февраля 2019

Сейчас я делаю проект на 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 '
';?>
...