如何将图像从图库上传到Android中的Parse Server ..?

时间:2016-08-29 14:29:32

标签: android parse-platform

这是我的代码

公共类TestingActivity扩展了AppCompatActivity {

Button btn_testing;
ProgressDialog pDialog;
ImageView iv_image;
Bitmap bMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.testing);
    btn_testing = (Button)findViewById(R.id.btn_testing);
    iv_image = (ImageView)findViewById(R.id.iv_imagetesting);

    FileInputStream in;
    BufferedInputStream buf;


    try
    {
        in = new FileInputStream("/storage/emulated/0/Pictures/InstaTag_Edit_20160427_131230-346274175.jpg");
        buf = new BufferedInputStream(in,1070);
        System.out.println("1.................."+buf);
        byte[] bMapArray= new byte[buf.available()];
        buf.read(bMapArray);
         bMap = BitmapFactory.decodeByteArray(bMapArray, 0, bMapArray.length);
        iv_image.setImageBitmap(bMap);
        if (in != null)
        {
            in.close();
        }
        if (buf != null)
        {
            buf.close();
        }

    }
    catch (Exception e) {
        Log.e("Error reading file", e.toString());
    }
    btn_testing.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            pDialog = new ProgressDialog(TestingActivity.this);
            pDialog.setMessage("Loading...");
            pDialog.show();


            Bitmap bitmap = ((BitmapDrawable)iv_image.getDrawable()).getBitmap();
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            // Compress image to lower quality scale 1 - 100
            bMap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] image = stream.toByteArray();

            ParseFile file = new ParseFile("androidbegin.png", image,"image/png");
            file.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    try {
                        pDialog.dismiss();
                    } catch (Exception e1) {
                    }
                    if (e == null) {
                        Toast.makeText(TestingActivity.this, "Image saved", Toast.LENGTH_LONG).show();
                    } else {
                        e.printStackTrace();
                        Toast.makeText(TestingActivity.this, "Image not saved", Toast.LENGTH_LONG).show();
                    }
                }
            });
        }
    });



}

}

这是我的日志响应:

  08-29 19:23:28.569 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:com.parse.ParseRequest $ ParseRequestException:错误的json响应 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at com.parse.ParseRequest.newTemporaryException(ParseRequest.java:290) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at com.parse.ParseRESTCommand.onResponseAsync(ParseRESTCommand.java:308) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at com.parse.ParseRequest $ 3.then(ParseRequest.java:137) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at com.parse.ParseRequest $ 3.then(ParseRequest.java:133) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.Task $ 15.run(Task.java:917) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.BoltsExecutors $ ImmediateExecutor.execute(BoltsExecutors.java:105) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.Task.completeAfterTask(Task.java:908) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.Task.continueWithTask(Task.java:715) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.Task.continueWithTask(Task.java:726) 08-29 19:23:28.570 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.Task $ 13.then(Task.java:818) 08-29 19:23:28.571 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.Task $ 13.then(Task.java:806) 08-29 19:23:28.571 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at bolts.Task $ 15.run(Task.java:917) 08-29 19:23:28.571 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 08-29 19:23:28.571 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588) 08-29 19:23:28.571 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at java.lang.Thread.run(Thread.java:818) 08-29 19:23:28.571 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:引起:org.json.JSONException:类型java.lang.String的值无法转换为JSONObject 08-29 19:23:28.578 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at org.json.JSON.typeMismatch(JSON.java:111) 08-29 19:23:28.579 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at org.json.JSONObject。(JSONObject.java:160) 08-29 19:23:28.579 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at org.json.JSONObject。(JSONObject.java:173) 08-29 19:23:28.579 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:at com.parse.ParseRESTCommand.onResponseAsync(ParseRESTCommand.java:298) 08-29 19:23:28.579 7072-7072 / com.appcentricsoftware.bumbysdigital W / System.err:... 13更多     

1 个答案:

答案 0 :(得分:0)

更改此行
ParseFile file = new ParseFile("androidbegin.png", image,"image/png");

ParseFile file = new ParseFile("androidbegin.png", image);

你有没有添加这些行,

            ParseObject photo = new ParseObject("Photo");
            photo.put("fileFull", imgfile);
            photo.put("User", ParseUser.getCurrentUser());
            photo.saveInBackground();