Пример, как обслуживать с помощью php загрузки с устройства Android - PullRequest
0 голосов
/ 08 июля 2011

Я новичок в Android, но проверяя Интернет и некоторые книги, я делаю приложение, которое должно отправить изображение и еще два параметра. Я просто хочу сделать скрипт php serve, который проверяет, были ли данные загружены / отправлены нормально.

Так вот мой код:

public void executeMultipartPost() //throws Exception
    {
        try {
            //convert image to stream, strImage is an image converted to string
            InputStream is          = new ByteArrayInputStream( this.strImage.getBytes("UTF-8") );  
            HttpClient httpClient   = new DefaultHttpClient();
            HttpPost postRequest    = new HttpPost("http://192.168.12.12/androidlistener/test.php");
            byte[] data             = IOUtils.toByteArray(is);
            InputStreamBody isb     = new InputStreamBody(new ByteArrayInputStream(data), "uploadedFile");
            //These params were filled in before this process

            StringBody sPhoneId     = new StringBody(strPhoneId);
            StringBody sMessage     = new StringBody(strMessage);

            MultipartEntity multipartContent = new MultipartEntity();
            multipartContent.addPart("uploadedFile", isb);
            multipartContent.addPart("phoneid", sPhoneId);
            multipartContent.addPart("msg", sMessage);
            postRequest.setEntity(multipartContent);
            HttpResponse response   = httpClient.execute(postRequest);
            response.getEntity().getContent().close();
        } catch (Throwable e)
        {
            // Manejar error
        }
    }

Так что мне нужна помощь, чтобы сделать скрипт php. Заранее спасибо.

1 Ответ

0 голосов
/ 08 июля 2011

Вы должны добавить Entity для загрузки, который является контрольной суммой (не медленнее, чем md5, помните время автономной работы).Затем вы сравниваете контрольную сумму изображения на стороне сервера с сущностью «uploadedFile».Я немного забываю, как работает HTTP, но для загрузки файла рекомендуется использовать Base64.

Простая контрольная сумма будет выглядеть как multipartContent.addPart ("контрольная сумма", isb.getContentLength );

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

Чтобы быть справедливым, вы также можете просто почти проверить, чтобы убедиться, что msg включен в значения post, если это так, маловероятно, что соединение было разорвано, как оно будет отправлено последним, но лучше всего выполнить.

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