Загрузка изображения на сервер в Android - PullRequest
1 голос
/ 24 мая 2011

В моем приложении я пытаюсь отправить изображение через сервер PHP.Проблема в том, что программисты PHP говорят, что это должно быть отправлено как данные.Ниже приведен код, который я сейчас использую, пожалуйста, помогите мне преобразовать изображение в данные и получить ответ от сервера.

InputStream is;
    private int serverResponseCode;
    private String serverResponseMessage;
    @Override
    public void onCreate(Bundle icicle) 
    {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        HttpURLConnection connection = null;
        DataOutputStream outputStream = null;
        DataInputStream inputStream = null;

        String pathToOurFile = "/sdcard/siva.PNG";
        Log.e("pathToOurFile",""+pathToOurFile);

        String urlServer = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/upload.php";
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary =  "*****";
        Log.e("URL Server",""+urlServer);

        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;
        Log.e("maxBufferSize",""+maxBufferSize);

        try
        {
            FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
            Log.e("FIS",""+fileInputStream);
            URL url = new URL(urlServer);
            connection = (HttpURLConnection) url.openConnection();

    //  Allow Inputs & Outputs
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setUseCaches(false);

            // Enable POST method
            connection.setRequestMethod("POST");

            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);

            outputStream = new DataOutputStream( connection.getOutputStream() );
            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
            outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd);
            outputStream.writeBytes(lineEnd);

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

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

            while (bytesRead > 0)
            {
                outputStream.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            }

            outputStream.writeBytes(lineEnd);
            outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

            // Responses from the server (code and message)
            Log.e("con",String.valueOf(connection.getDoOutput()));

            serverResponseCode = connection.getResponseCode();
            serverResponseMessage = connection.getResponseMessage();
            Log.e("response",""+serverResponseCode);
            Log.e("serverResponseMessage",""+serverResponseMessage);

            fileInputStream.close();
            outputStream.flush();
            outputStream.close();
        }
        catch (Exception ex)
        {
            Log.e("Exception Handling",""+ex);
        }
      }

1 Ответ

0 голосов
/ 25 мая 2011

Atlast, я нашел ответ, я сделал небольшую ошибку .... В приведенном выше коде я изменил только одно слово в следующей строке

outputStream.writeBytes ("Content-Disposition: form-data; name = \ " uploadedfile \"; filename = \ "" + pathToOurFile + "\" "+ lineEnd);

В приведенной выше строке основной частью является слово" uploadedfile ",Это слово должно быть указано программистом php, иначе файл, который мы отправляем, не будет заменен.

Пожалуйста, укажите здесь

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