无法在多部分表单请求

时间:2016-06-17 20:33:41

标签: android file multipartform-data

我需要使用多部分表单上传文件。

我可以从以下路径上传图片:

/storage/emulated/0/Pictures/Screenshots/Screenshot_20160614-224624.png

但是,当我尝试上传PDF文件时,它会失败。 PDF文件路径是:

/storage/emulated/0/Android/data/com.google.android.apps.docs/cache/projector/pdf.pdf

任何人都可以告诉我为什么它适用于图像并且失败并使用pdf ??

这是我的代码:

try {
    MultipartUtility multipart = new MultipartUtility(ForSaleConstants.EXTRA_FILE_UPLOADER, ForSaleNetworkManager.CHARACTER_SET);
    multipart.addFormField(ForSaleConstants.DEVICE_ID, deviceId);

    String uriString = extraFileUri.toString();
    Log.e("File_URI", uriString);
    uriString = Uri.decode(uriString);

    if (uriString.contains("file://")) {
        uriString = uriString.replace("file://", "");
        File uploadFile = new File(uriString);
        multipart.addFilePart(("file"), uploadFile);
    } else if (uriString.contains("content://")) {
        uriString = FileManager.getInstance().getRealPathFromImageUri(context, Uri.parse(uriString));
        File uploadFile = new File(uriString);
        multipart.addFilePart(("file"), uploadFile);
    } else {
        try {
            File uploadFile = new File(uriString);
            multipart.addFilePart(("file"), uploadFile);
        }catch (Exception e) {

        }
    }


    List<String> response = multipart.finish();

    if(response != null && response.size() > 0) {

        mStopTime = System.nanoTime();
        PerformanceManager.getInstance().showCalculatedTime("uploadExtraFile [doInBackground]", mStartTime, mStopTime);

        JSONObject json = ForSaleNetworkManager.convertStringToJSONObject(response.get(0));
        BaseResponse response1 = new BaseResponse(json, null);
        return response1;

    }
} catch (Exception e) {
    e.printStackTrace();
    uiListener.onUploadExtraFileCompleted(null, AppError.DATA_ERROR);
    return null;
}

1 个答案:

答案 0 :(得分:0)

这是您的应用程序包吗?

com.google.android.apps.docs

    /storage/emulated/0/Android/data/com.google.android.apps.docs/cache/projector/pdf.pdf

如果不是因为沙盒而无法访问它。

  

更新

每个Android应用程序都在自己的linux进程中运行,因此除非存储在公共位置,否则无法访问不同应用程序中的文件。就像你的形象一样。因此,您无法上传pdf文件