Загрузить файл изображения объекта Android - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу загрузить файл изображения на сервер по HTTP POST, multipart / form-data.

React Web Client может загрузить файл изображения на сервер, но Android-клиент не может.

Сервер сообщает об ошибке типа при отправке запроса клиентом Android.

Этот код является частью кода клиента React-Web. Работает нормально.

//Get Image file in my computer
setImage() {   
    window.$("input:file").click();
}

//Set this.state.file
onChange(e) {
    this.setState({ 
        file: e.target.files[0]
    });
}

const formData = new FormData();
formData.append('image', this.state.file);   //image file object
const result = await imageFileUpload(formData, "image");

export async function imageFileUpload(formData, type) {
    let result = '';

    await axios.post(`${AWS_LAMBDA_API_URL}?type=${type}`, formData,
    { headers: { 'Content-Type': 'multipart/form-data' }})
    .then((response) => {result = response});

    return result;
    //result give me images URL.
};

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

imgURL выглядит как "/storage/emulated/0/DCIM/img/1493742568136.jpg"

public static String requestHttpPostLambda(String requrl, String imgURL) {
    String result = null;
    try {
        HttpClient client = new DefaultHttpClient();
        String postURL = requrl;
        HttpPost post = new HttpPost(postURL);
        post.setHeader("Content-Type", "multipart/form-data");

        File file = new File(imgURL);

        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        builder.addPart("image", new FileBody(file));
        post.setEntity(builder.build());

        HttpResponse responsePOST = client.execute(post);
        HttpEntity resEntity = responsePOST.getEntity();
        if (resEntity != null) {
            result = EntityUtils.toString(resEntity);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

Как я могу изменить код Android?

...