Загрузка изображения из формы xamarin на php сервер

Пожалуйста, я пытался загрузить изображения из приложения формы xamarin на сервер php, но, похоже, не работает. Сервер получает пустой запрос $ _FILES. Это код C #.

    public async Task<bool> Upload(MediaFile mediaFile, string filename)
{
byte[] bitmapData;
var stream = new MemoryStream();
mediaFile.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 = "fileUpload",
FileName = filename
};

string boundary = "---8393774hhy37373773";
MultipartFormDataContent multipartContent = new MultipartFormDataContent(boundary);
multipartContent.Add(fileContent);HttpClient httpClient = new HttpClient();
HttpResponseMessage response = await httpClient.PostAsync("http://www.url.com/upload.php", multipartContent);
response.EnsureSuccessStatusCode();

if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();

return true;
}
return false;
}

Ниже приведен файл php для получения загруженного изображения. Я пытался сохранить содержимое размещенного изображения в файл, но файл содержит только пустой массив и всегда возвращает «сбой». Пожалуйста, что я пропустил неправильно? Я искал в Интернете, но не могу понять проблему.

  $uploads_dir = 'uploads/';
$req_dump = print_r( $_FILES, true );
$fp = file_put_contents( 'data.txt', $req_dump );
if (isset($_FILES["fileUpload"]["tmp_name"]) AND is_uploaded_file($_FILES["fileUpload"]["tmp_name"]))
{
$tmp_name = $_FILES["fileUpload"]["tmp_name"];
$name = $_FILES["fileUpload"]["name"];
$Result = move_uploaded_file($tmp_name, "$uploads_dir/$name");
echo "Success";
}
else
{
echo "Failure";
}

1

Решение

Оператор AND — не лучший выбор для вас. (В строке 4).
Иногда это показывает действительно неожиданное поведение. (Я могу отослать вас к «И» против «&&как оператор для получения дополнительной информации).

Если вы хотите логическое И использовать && оператор вместо.
Линия будет

if (isset($_FILES["fileUpload"]["tmp_name"]) && is_uploaded_file($_FILES["fileUpload"]["tmp_name"]))
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]