Я отправляю фотографии из своего Android-приложения на сервер, у которого есть этот код php:
<?php
$file_path = "uploads/";
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
echo "success";
} else{
echo "fail";
}
?>
После завершения загрузки изображение находится в ожидаемой папке, но эхо было "сбой". Важно знать правильное эхо, почему возможно, что эхо-сообщение возвращается как не пройденное?
Программистам Android необходимо использовать
InputStream is = new BufferedInputStream(conn.getInputStream());
String s = convertInputStreamToString(is);
Теперь вернемся к успеху. convertInputStreamToString - мой собственный метод, но каждый может понять, как его написать. Предложение @mcklayin было правильным.
Вы можете попробовать использовать возвращаемое значение ошибки, чтобы отобразить тип ошибки, например:
<?php
$errors=array(
UPLOAD_ERR_INI_SIZE => 'UPLOAD_ERR_INI_SIZE',
UPLOAD_ERR_FORM_SIZE => 'UPLOAD_ERR_FORM_SIZE',
UPLOAD_ERR_PARTIAL => 'UPLOAD_ERR_PARTIAL',
UPLOAD_ERR_NO_FILE => 'UPLOAD_ERR_NO_FILE',
UPLOAD_ERR_NO_TMP_DIR => 'UPLOAD_ERR_NO_TMP_DIR',
UPLOAD_ERR_CANT_WRITE => 'UPLOAD_ERR_CANT_WRITE',
UPLOAD_ERR_EXTENSION => 'UPLOAD_ERR_EXTENSION'
);
$file_path = "uploads/";
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if( move_uploaded_file( $_FILES['uploaded_file']['tmp_name'], $file_path ) ) {
echo "success";
} else{
$error=$errors[ $_FILES["uploaded_file"]["error"] ];
echo "fail:" . $error;
}
?>
попробуйте этот код:
$file = $_FILES['fileup']['name'];
$tmp_name = $_FILES['fileup']['tmp_name'];
$target_dir = "uploads/".basename($file);
if($file!="")
{
if(move_uploaded_file($tmp_name,$target_dir))
{
$fileErr = "Image Upload Success";
}
else
{
$filer = "Image Upload Not Success";
}
}
uploads/
недоступна для записи пользователю сервера?