如何使用Volley在服务器上上传图像? [英] How to upload Image on server using Volley?
问题描述
我正在尝试使用 Volley 发布数据,但是我无法将图像上传到服务器上.总是出现错误,例如http:\\www.mybaseurl.com/upload.php
的意外响应代码500.
以下是我尝试上传的代码
I'm trying to post my data using Volley but my i'm not able to upload my image on server. Always getting error like unexpected response code 500 for http:\\www.mybaseurl.com/upload.php
.
Following is my code by which i'm trying to upload
public String getStringImage(Bitmap bmp){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
private void uploadImage(){
//Showing the progress dialog
final ProgressDialog loading = ProgressDialog.show(this,"Uploading...","Please wait...",false,false);
StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
//Disimissing the progress dialog
loading.dismiss();
//Showing toast message of the response
Toast.makeText(MainActivity.this, s , Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//Dismissing the progress dialog
loading.dismiss();
//Showing toast
Toast.makeText(MainActivity.this, ""+volleyError, Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//Converting Bitmap to String
String image = getStringImage(bitmap);
//Getting Image Name
String name = editTextName.getText().toString().trim();
//Creating parameters
Map<String,String> params = new Hashtable<String, String>()
params.put("empsno", "81");
params.put("storesno", "165");
params.put("lrSno", "1808");
params.put("recQty", "0");
params.put("recVol", "0");
params.put("recWgt", "0");
params.put("damageQty", "0");
params.put("looseQty", "0");
params.put("deliveryDate", "2016-09-24");
params.put("deliveryTime", "10:15");
params.put("uploadFile", image);
params.put("remarks", "mytestingrem");
params.put("receivedBy", "amankumar");
params.put("ipAddress", "12.65.65.32");
//returning parameters
return params;
}
};
//Creating a Request Queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(stringRequest);
}
private void showFileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri filePath = data.getData();
try {
//Getting the Bitmap from Gallery
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
//Setting the Bitmap to ImageView
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onClick(View v) {
if(v == buttonChoose){
showFileChooser();
}
if(v == buttonUpload){
uploadImage();
}
}
请帮助我,如何使用这些参数上传文件.我是排球新手.我只是从https://www.simplifiedcoding.net/android-volley-tutorial-to-upload-image-to-server
复制粘贴此代码.甚至我都不知道我是否使用正确.
提前感谢
Please help me , how to upload the file with these parameter. I'm new in volley. I simply copy paste this code from https://www.simplifiedcoding.net/android-volley-tutorial-to-upload-image-to-server
. Even i don't know whether i'm using correctly or not.
Thanks in advance
推荐答案
您应该了解使用凌空库和图像上传的概念.以下是一些其他有用的链接,用于图像上传和使用凌空库.
You should have to understand the concept to use of volley library and image uploads. Here are some other useful links for image upload and use of volley library.
注意:我还测试了您的tutorial.code没问题.请正确检查图像路径.如果可能的话,请在任何托管的Web服务器上使用其php代码.并检查他们的json响应,然后交叉检查您与服务器脚本的参数一起传递的参数.
Note: I have also tested your tutorial.code are ok. Please check your image path properly. If possible then use their php code on any hosted web server. and check their json response and cross check your parameter which you have passed with server script's parameters..
这篇关于如何使用Volley在服务器上上传图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!