我正在尝试使用您随处可见的上传到服务器教程。就像Uploading file to server with android一样,它们都使用相同的函数和相同的开头,这是我的:
String fileName = sourceFileUri;
HttpURLConnection conn = null;
DataOutputStream dos = null;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1 * 1024 * 1024;
File sourceFile = new File(sourceFileUri);
if (!sourceFile.isFile()) {
Log.i(Utils.TAG, "uploadFile: Source File not exist: " + sourceFileUri );
return 0;
}
问题是,它无法识别我拍摄的任何图像或从图库中选择。
画廊:
uploadFile: Source File not exist :content://media/external/images/media/342
照片:uploadFile: Source File not exist: file:///storage/emulated/0/MyDir/blah
答案 0 :(得分:3)
关于content://media/external/images/media/342
,这是Uri
的{{1}}。由于您不需要将文件上传到服务器,只需要文件的内容,因此ContentProvider
上InputStream
上的Uri
会收到file:///storage/emulated/0/MyDir/blah
。
关于Uri
,当File
指向文件时,openInputStream()
构造函数不会使用URL。 file:
也适用于Uri
{{1}}个值,因此您可能会考虑针对这两种情况采用该路线。