Hy парней!Android Volley Library: Как отправить изображение на сервер?
У меня есть jpg image stored on my device
, и я хочу sent it to server
(mywebsite.com/api.php). Я хотел бы использовать volley library
, потому что он сделан официальными разработчиками Android из Google, и я думаю, что они как можно скорее добавят его в sdk.
Сейчас я использую ниже код для отправки строк на сервер:
postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
// code here for response
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// code here for error response
}
}
) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
// the POST parameters:
params.put("key", "myApiKey");
params.put("data","stringOfMyData");
return params;
}
};
Как я могу отправить JPG на сервер с залпового библиотеки? Каждый раз, когда я отправляю что-то, мне нужно отправить его вместе с ключом API, чтобы получать информацию на сервер, поэтому я не могу изменить Map<String, String>
на Map<String, File>
, потому что мой ключ API - это строка.
Я прочитал, что есть решение по изменению моего изображения на byte[] array
, а затем преобразование его в формат base64 string
, но я хотел бы избежать этого, если это возможно.
Есть ли другие решения для отправки изображения без преобразования его в base64 string
?
Любые рекомендации или советы приветствуются! Заранее спасибо!
Я не полностью undertand конструкторы из пример github. И параметры 'new MultipartRequest (url, params, image_path, ...' не соответствуют аргументам конструкторов MultipartRequest. Из-за этого я получаю следующую ошибку и возможное решение: Can not Resolve Constructor ... Изменить подпись MultipartRequest –
Я думаю, что правильный порядок параметров: 'multipartRequest = new MultipartRequest (url, imagePath, params, ...)', потому что порядок параметров конструктора является 'public MultipartRequest (String url, String filePath, String routeId, ...)', но я не знать, что такое routeId и как я могу добавить HashMap ('HashMap' не то же самое, что 'String') –
Вы можете посмотреть [мой ответ здесь] (http://stackoverflow.com/questions/16797468/how-to-send-a-multipart-form-data-post-in-android-with-volley/31718902 # 31718902). Два варианта: с или без HttpEntity :-) – BNK