#android #server #android-volley #image-uploading
#Android #сервер #android-volley #загрузка изображений
Вопрос:
Я пытаюсь загрузить изображения с помощью библиотеки volley, я не знаю, как именно.
Я ссылался на ранее заданные вопросы, но, похоже, ничего не удовлетворяет.
Вот что мне нужно было достичь :
Ниже приведен код, который я пытался использовать :
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("**********", " Response Received is " response);
try {
JSONObject jsonObject = new JSONObject(response);
Log.d("**********", "STRING TO JSON CONVERSION DONE , IT IS " jsonObject.toString());
ParseReqOtp parseReqOtp = new ParseReqOtp();
parseReqOtp.parseImageupload(jsonObject);
} catch (Exception e) {
Log.d("**********", "ERROR IN STRING TO JSON CONVERSION " e.toString());
}
Log.d("**********", "FETCHING IN VOLLEY REQ" response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(AddPic.this, error.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected HashMap<String,String> getParams() {
HashMap<String, String> params = new HashMap<String, String>();
params.put("id", BaseActivity.getBaseActivity().getEstablishment_id());
params.put("type", "photos");
params.put("example_file",file.toString());
}
};
Комментарии:
1. Используйте стороннюю библиотеку Cloudinary для загрузки изображения. Это CDN, в котором вы можете сохранять изображения и извлекать их из него в разных разрешениях.
2. Кажется, вы отправляете изображение в виде файла. Вам нужно использовать MultipartEntity с volley.
3.
params.put("example_file",file.toString()
. Что ж, если у вас возникли проблемы с загрузкой файла, вы должны точно показать, что и как вы помещаете содержимоеfile
.4.
You need to use MultiPartEntity with volley
. Нет. Это неверно, глядя на этуx-www-form-urlencoded
схему. Если это действительно работает. Но OP, к сожалению, не сказал.
Ответ №1:
private void uploadImageWithStringParamsToServer() {
SimpleMultiPartRequest smr = new SimpleMultiPartRequest(Request.Method.POST, "http://139.59.16.103/addImage",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("Response", response);
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
}
});
smr.addStringParam("id", "821470");
smr.addStringParam("type", "photos");
smr.addFile("example_file", "2014-11-17 17.08.33-2.jpg");
smr.setFixedStreamingMode(true);
smr.setOnProgressListener(this);
RequestQueue mRequestQueue = Volley.newRequestQueue(this);
mRequestQueue.add(smr);
mRequestQueue.start();
}
Комментарии:
1. смотрите github.com/DWorkS/VolleyPlus/blob/master/library/src/com/… @AnishKumar
2. Спасибо @Clive Seebregts
3. @CliveSeebregts Предположим, что я получаю uri (data.getData) из onActivityResult после выбора изображения из галереи. Как мне передать этот uri в smr.addFile(«example_file», «???») для отправки запроса?