如何使用Volley在服务器上上传图像? [英] How to upload Image on server using Volley?

查看:176
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆