проблема с полученным изображением в php со скриптом загрузки Android

#php #android #image #upload

#php #Android #изображение #загрузка

Вопрос:

Я использую этот код для загрузки изображения: http://vikaskanani.wordpress.com/2011/01/11/android-upload-image-or-file-using-http-post-multi-part/

Я заменил

 bm = BitmapFactory.decodeFile("/data/data/fshizzle.com/files/image.jpg");
  

и

 HttpPost postRequest = new HttpPost("http://10.0.2.2/upload.php");
  

это все!

Я не могу получить информацию в php-файле, я использую этот код, php работает, если использовать html-код

 <form method="POST" action="upload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 100Ko -->
     <input type="hidden" name="MAX_FILE_SIZE" value="100000">
     Fichier : <input type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
  

КОД PHP:

 $dossier = './upload/';
$fichier = basename($_FILES['sfsdfsdf']['name']);
if(move_uploaded_file($_FILES['sfsdfsdf']['tmp_name'], $dossier . $fichier)) 
//Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
     echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
     echo '<br>Echec de l'upload !';
}
  

простой if(isset($_FILES['sfsdfsdf'])) не работает, что такое хороший код?

Ответ №1:

Если я понимаю вашу проблему, то вчера у меня было то же самое. Из предоставленного вами кода кажется, что они упустили некоторые важные части, такие как enctype. Если вы Google загружаете изображение на php с Android, есть несколько лучших примеров.

Если вы решили сделать это таким образом, убедитесь, что ваши серверные разрешения установлены так, чтобы разрешить php создавать, записывать и / или читать файлы для любого каталога, который вы используете. Я обнаружил, что этот метод оказался настоящей проблемой, и обнаружил, что гораздо проще преобразовать изображение в base64 и отправить его в виде строки на сервер, а php создать файл, используя строку base64. Если вы не можете понять, как это сделать (Google), дайте мне знать, и я посмотрю, смогу ли я отправить вам какой-нибудь код.

Ответ №2:

простой пример загрузки, который поможет вам лучше понять процесс.

 <form method="POST" action="upload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 100Ko -->
     <input type="hidden" name="MAX_FILE_SIZE" value="100000">
     Fichier : <input type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
  

upload.php

 <?php 
$dossier = './upload/';
//check for image mime types amp; under 100kb
if ($_FILES["avatar"]["type"] == "image/jpeg" ||
$_FILES["avatar"]["type"] == "image/png" ||
$_FILES["avatar"]["type"] == "image/gif"
amp;amp; $_FILES["avatar"]["size"] < 100000){

    //if server rejects the upload (http://php.net/manual/en/features.file-upload.errors.php)
    if($_FILES["avatar"]["error"] > 0){
        $uploadSuccess='<br>Echec de l'upload !';
    }else{
        //check if file already exists
        if (file_exists($dossier.$_FILES['avatar']['name'])){
            $uploadSuccess=$_FILES["avatar"]["name"]." already exists.";
        }else{
            //move the uploaded file
            move_uploaded_file($_FILES["avatar"]["tmp_name"],$dossier.$_FILES['avatar']['name']);
            $uploadSuccess='Upload effectué avec succès !';
            //success
        }
    }
}else{$uploadSuccess='<br>Echec de l'upload !';}

echo $uploadSuccess;
?>
  

Ответ №3:

Решена, я тестирую с помощью Mydns и моего реального телефона, и это работает.