我需要使用多部分表单上传文件。
我可以从以下路径上传图片:
/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;
}
答案 0 :(得分:0)
这是您的应用程序包吗?
/storage/emulated/0/Android/data/com.google.android.apps.docs/cache/projector/pdf.pdf
如果不是因为沙盒而无法访问它。
更新
每个Android应用程序都在自己的linux进程中运行,因此除非存储在公共位置,否则无法访问不同应用程序中的文件。就像你的形象一样。因此,您无法上传pdf文件