2015-03-13 3 views
0

Я следую этому руководству.Как разобрать php-сообщение с Java - ошибка неправильного HTTP-формата

http://www.androidhive.info/2014/12/android-uploading-camera-image-video-to-server-with-progress-bar/

Если следовать учебник, я сохранил fileUpload.php к моему серверу.

http://68.169.50.115/AndroidFileUpload/fileUpload.php

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

private void showAlert(String message) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage(message).setTitle("Response from Servers") 
       .setCancelable(false) 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         // do nothing 
        } 
       }); 

     Log.d("OGG", "JSON: " + message); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

} 

Это ответ от сообщения Log.d, сообщение JSON, образованное изображением.

03-13 16: 40: 24.725: D/OGG (5158): Ссылка: {"error": false, "message": "Файл загружен успешно!", "File_path": "http: //68.169 .50.115/AndroidFileUpload/IMG_20150313_164010.jpg "}

Это говорит о том, что картина существует, но если вы пытаетесь ссылку ..

http://68.169.50.115/AndroidFileUpload/IMG_20150313_164010.jpg

It не работает.

Не работает ли он должным образом, потому что у меня есть файл php, сохраненный на моем облачном сервере, а не на моем персональном компьютере, как диктует учебник?

Почему файл фактически не сохраняется.

Вот файл upload.php

<?php 



// Path to move uploaded files 
$target_path = "uploads/"; 

// array for final json respone 
$response = array(); 

// getting server ip address 
$server_ip = gethostbyname(gethostname()); 

// final file url that is being uploaded 
//$file_upload_url = 'http://' . $server_ip . '/'; 

$file_upload_url = 'http://' . $server_ip . '/' . 'AndroidFileUpload' . '/'; 


if (isset($_FILES['image']['name'])) { 
$target_path = $target_path . basename($_FILES['image']['name']); 


// reading other post parameters 
$email = isset($_POST['email']) ? $_POST['email'] : ''; 
$website = isset($_POST['website']) ? $_POST['website'] : ''; 



try { 
// Throws exception incase file is not being moved 


if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) { 
// make error flag true 
$response['error'] = true; 
$response['message'] = 'Could not move the file!'; 
} 


// File successfully uploaded 
$response['message'] = 'File uploaded successfully!'; 
$response['error'] = false; 

$response['file_path'] = $file_upload_url . basename($_FILES['image']['name']); 
} catch (Exception $e) { 
// Exception occurred. Make error flag true 
$response['error'] = true; 
    $response['message'] = $e->getMessage(); 
} 
} else { 
// File parameter is missing 
$response['error'] = true; 
$response['message'] = 'Not received any file!F'; 
} 

// Echo final json response to client 
echo json_encode($response); 
?> 
+0

я смог его Работа. Взгляните на мой обновленный ответ. –

ответ

1

Я был в состоянии получить turorial работать. Было немного сложно заставить его работать с Android Studio.

Последняя проблема, с которой я столкнулся, заключалась в том, что разрешения на папку в папке «uploads» должны быть установлены с разрешением на запись для группы и публики. Итак, я бы предположил, что это, вероятно, проблема, с которой вы столкнулись.

Я также использовал модифицированный PHP-код снизу.

Код PHP как есть, вернет ответ успеха, если вызов move_uploaded_file() завершится с ошибкой, но не вызывает исключения. Кто-то прокомментировал это и в учебнике.

Попробуйте это и посмотреть, если вы все равно получите ответ успеха: Переместить раздел успеха в блок еще так, чтобы он не дозвонились на случай отказа:

try { 
// Throws exception incase file is not being moved 

    if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) { 
    // make error flag true 
    $response['error'] = true; 
    $response['message'] = 'Could not move the file!'; 
    } else { 

    // File successfully uploaded 
    $response['message'] = 'File uploaded successfully!'; 
    $response['error'] = false; 

    $response['file_path'] = $file_upload_url . basename($_FILES['image']['name']); 
    } 
} catch (Exception $e) { 
    // Exception occurred. Make error flag true 
    $response['error'] = true; 
    $response['message'] = $e->getMessage(); 
} 
} else { 
// File parameter is missing 
$response['error'] = true; 
$response['message'] = 'Not received any file!F'; 
} 
+0

03-13 17: 42: 27.325: D/OGG0 (15138): Ссылка: {"error": true, "message": "Не удалось переместить файл!"} Теперь говорится, что файл на самом деле не перемещен? Итак, весь учебник не работает? – losethequit

+0

Просто используйте учебник как свободный путеводитель. Он заставил его работать в одной среде, в вашей среде всегда будут некоторые изменения. Вы используете Eclipse или AndroidStudio? –

+0

Eclipse. Кто-то оставил ответ, но они удалили его. Когда я изменяю PHP так, как вы предлагали, он говорит, что файл не перемещен. – losethequit

Смежные вопросы