我试图使用http post进行文件上传,但是当我尝试使用手机上的micro-SD卡中的文件时,它不会创建它以便我可以上传它。从主手机存储器中选择文件时,它非常有效,而不是SD卡。
我使用外部库作为文件选择对话框,当我尝试从SD卡中选择图像时返回此对话框(在此示例中是从相机应用程序中拍摄的照片):
/sdcard-ext/dcim/Camera/2012-07-02_12-28-19_548.jpg
这是从我在手机上的操作系统文件中找到的随机图片返回的:
/sdcard/DCIM/.thumbnails/1331049921270.jpg
我知道这个看起来像是在SD卡上(或者至少对我而言),但这绝对是手机的存储空间。
以下是我目前用于文件上传的代码: HttpClient httpclient = new DefaultHttpClient(); httpclient.getParams()。setParameter(CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost(myURL);
MultipartEntity mp = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
String mimeType = getFileMimeType(filePath);//the filePath is passed to the function
that this code is contained inside and is initially sent from the file selection dialog
mp.addPart("fileupload", new FileBody(new File(filePath), mimeType));
httppost.setEntity(mp);
String response = EntityUtils.toString( httpclient.execute( httppost ).getEntity(), "UTF-8" );
System.out.println(response);
httpclient.getConnectionManager().shutdown();
如果任何一个可以解释为什么这适用于手机的内部存储而不是可移动的SD卡,那就太棒了! 感谢。
更新:如果有任何不同,我的目标是Android 2.2。如果它没有任何区别,我仍然瞄准Android 2.2
答案 0 :(得分:1)
添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
注意:您还应该在logcat中看到“权限被拒绝”错误,该错误本应提醒您注意此问题。
修改强> 对不起,只需从您需要的外部存储中读取:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />