将图像上传到服务器android时出现空点异常

时间:2020-03-19 15:54:45

标签: android android-studio

主要活动我正在拍照并存储在此处,并将路径传递给JSONParser类中的makeimagerequest()函数,该类使http请求到达

Camera.PictureCallback getPictureCallback = new Camera.PictureCallback() {
            @Override
            public void onPictureTaken(byte[] data, Camera camera) {
                bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                pass=saveImage(bitmap);
                new send_to_server().execute();

            }
        };

saveImage函数

public String saveImage(Bitmap myBitmap) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        myBitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
        File wallpaperDirectory = new File(
                Environment.getExternalStorageDirectory() + IMAGE_DIRECTORY);


        if (!wallpaperDirectory.exists()) {
            Log.d("directory", "" + wallpaperDirectory.mkdirs());
            wallpaperDirectory.mkdirs();
        }

        try {
            File f = new File(wallpaperDirectory, "abc"+ ".jpg");
            f.createNewFile();   //give read write permission
            FileOutputStream fo = new FileOutputStream(f);
            fo.write(bytes.toByteArray());
            MediaScannerConnection.scanFile(this,
                    new String[]{f.getPath()},
                    new String[]{"image/jpeg"}, null);
            fo.close();
            Log.d("TAG", "File Saved:" + f.getAbsolutePath());

            return f.getAbsolutePath();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        return "";

    }

在send_to_server异步类内部,我正在执行以下操作:

String json = jsonParser.makeImageRequest(url,
                    "POST", pass);
JSONParser类中的

makeImageRequest函数:

public String makeImageRequest(String url, String method,
                                    String image) {


        try {
            json="";


            MultipartEntityBuilder builder = MultipartEntityBuilder.create();


            builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);


            FileBody fileBody = new FileBody(new File(image)); 
            builder.addPart("my_file", fileBody);
            HttpEntity entity = builder.build();

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            httpPost.setEntity(entity);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }


        return json;

    }

最后在服务器上,我正在执行以下操作:

<?php
$response=array();
$filePath = "/lib/test.jpg";
$imsrc = $_FILES['my_file']['tmp_name'];
move_uploaded_file($imsrc,$filePath);
$response["success"] = 1;
        $response["message"] = "uploaded";
echo json_encode($response);
?>

0 个答案:

没有答案