Файл не загружается на сервер android - PullRequest
0 голосов
/ 24 апреля 2020

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

загрузить файл:

public class UploadFiles {
    private String sourceFileUri = "";

    public UploadFiles(final String sourceFileUri){
        this.sourceFileUri = sourceFileUri;
        new UploadFileAsync().execute("");
    }

    private class UploadFileAsync extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            try {
                HttpURLConnection conn = null;
                DataOutputStream dos = null;
                String lineEnd = "\r\n";
                String twoHyphens = "--";
                String boundary = "*****";
                int bytesRead, bytesAvailable, bufferSize;
                byte[] buffer;
                int maxBufferSize = 1 * 1024 * 1024;
                File sourceFile = new File(sourceFileUri);

                if (sourceFile.isFile()) {

                    try {
                        String upLoadServerUri = "http://myserver/gpstracker/api/v1/users/uploadfile.php";

                        // open a URL connection to the Servlet
                        FileInputStream fileInputStream = new FileInputStream(
                                sourceFile);
                        URL url = new URL(upLoadServerUri);

                        // Open a HTTP connection to the URL
                        conn = (HttpURLConnection) url.openConnection();
                        conn.setDoInput(true); // Allow Inputs
                        conn.setDoOutput(true); // Allow Outputs
                        conn.setUseCaches(false); // Don't use a Cached Copy
                        conn.setRequestMethod("POST");
                        conn.setRequestProperty("Connection", "Keep-Alive");
                        conn.setRequestProperty("ENCTYPE",
                                "multipart/form-data");
                        conn.setRequestProperty("Content-Type",
                                "multipart/form-data;boundary=" + boundary);
                        conn.setRequestProperty("bill", sourceFileUri);

                        dos = new DataOutputStream(conn.getOutputStream());

                        dos.writeBytes(twoHyphens + boundary + lineEnd);
                        dos.writeBytes("Content-Disposition: form-data; name=\"bill\";filename=\""
                                + sourceFileUri + "\"" + lineEnd);

                        dos.writeBytes(lineEnd);

                        bytesAvailable = fileInputStream.available();

                        bufferSize = Math.min(bytesAvailable, maxBufferSize);
                        buffer = new byte[bufferSize];

                        bytesRead = fileInputStream.read(buffer, 0, bufferSize);

                        while (bytesRead > 0) {

                            dos.write(buffer, 0, bufferSize);
                            bytesAvailable = fileInputStream.available();
                            bufferSize = Math
                                    .min(bytesAvailable, maxBufferSize);
                            bytesRead = fileInputStream.read(buffer, 0,
                                    bufferSize);

                        }

                        // send multipart form data necesssary after file
                        // data...
                        dos.writeBytes(lineEnd);
                        dos.writeBytes(twoHyphens + boundary + twoHyphens
                                + lineEnd);

                        int serverResponseCode = conn.getResponseCode();

                        String serverResponseMessage = conn
                                .getResponseMessage();
                        System.out.println("SERVER: " + serverResponseMessage);
                        if (serverResponseCode == 200) {
                        }

                        fileInputStream.close();
                        dos.flush();
                        dos.close();

                    } catch (Exception e) {

                        e.printStackTrace();

                    }
                } // End else block


            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return "Executed";
        }
    }

}

php file

<?php

 if (is_uploaded_file($_FILES['bill']['tmp_name'])) {
    $uploads_dir = '/var/www/html/gpstracker/api/v1/users/images';
    $tmp_name = $_FILES['bill']['tmp_name'];
    $pic_name = $_FILES['bill']['name'];
    move_uploaded_file($tmp_name, $uploads_dir.$pic_name);
  }
    else{
     echo "File not uploaded successfully.";
  }  
?>

Ответ сервера:

System.out: SERVER: OK

1 Ответ

0 голосов
/ 24 апреля 2020

Ответ сервера 200 не означает, что загрузка прошла успешно. Попробуйте вывести эхо php. См. Получить PHP Эхо в Android.

Редактировать: У вас есть разрешение на этот каталог? См. PHP move_uploaded_file () ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...