图像文件消失了,没有上传



我有一个应用程序,该应用程序创建一个文件如下:

File image = File.createTempFile(
                imageFileName,  // prefix
                ".jpg",         // suffix
                storageDir      // directory
        );

遵循此调用image.exists()返回true。然后,我将文件名作为意图以额外数据的目的发送到相机:

takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,  
                           Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);

我保存了看起来像这样的文件路径:" file:/storage/emulation/0/pictures/jpeg_20171211_162442_162442_-1697405777.jpg"。当结果从相机活动返回时,我可以使用文件路径创建一个位图:

bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath));

我成功地显示了位图,但是当我使用路径创建文件对象时,file.exists()返回false,尽管我可以使用" adb shell ls"看到文件。更重要的是,我无法使用帖子调用将图像加载到服务器,这看起来像:

File sourceFile = new File(sourceImageFile);
        String fileName = sourceFile.getName();
        Log.d(Constants.TAG, "File...::::" + sourceFile + " : " + sourceFile.exists());
        final MediaType MEDIA_TYPE = MediaType.parse("image/jpeg");
        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("xxx_upload_file", fileName, RequestBody.create(MEDIA_TYPE, sourceFile))
                .addFormDataPart("content", "upload_img")
                .addFormDataPart("XXX_id", Constants.xxx_ID)
                .addFormDataPart("session_id", mPicActivity.mSessionID)
                .addFormDataPart("source_url", "Chatbot")
                .build();
        Request request = new Request.Builder()
                .url(Constants.CHATBOT_URL_BASE + Constants.STORE_EXAMINE)
                .post(requestBody)
                .build();

        mClient.newCall(request).enqueue(new Callback()...);

服务器响应其他呼叫,因此这不是连接性或URL问题。上传是否失败是因为文件突然不存在(即使它确实存在,如上所述)?是连接到"模拟"文件路径的问题。

"file:/storage/emulated/0/Pictures/JPEG_20171211_162442_-1697405777.jpg". 

应该是

"/storage/emulated/0/Pictures/JPEG_20171211_162442_-1697405777.jpg". 

保存临时文件时,android添加了一些随机符号,例如" youfilename.jpgxkd5jrj"。

检查File image的确切文件名/路径或在文件管理器中查看临时文件目录,以查看文件是否真的存在。

最新更新