【问题标题】:Android File Loading from sd card从 sd 卡加载 Android 文件
【发布时间】:2012-07-02 19:41:42
【问题描述】:

我尝试使用 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 为目标

【问题讨论】:

  • 您在清单中请求了哪些权限?
  • <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 有没有专门用于我缺少的外部 SDCARD 的?

标签: android file-upload android-sdcard android-file


【解决方案1】:

添加

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

注意:您还应该在 logcat 中看到“权限被拒绝”错误,它应该提醒您注意这个问题。

编辑: 抱歉,仅从您需要的外部存储中读取:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

【讨论】:

  • 你确定这个权限会阻止我从外部存储读取吗?我从来没有在那里写过任何东西,所以我仍然对这个解决方案有点困惑。
  • 编辑了我的答案。没有意识到你只是想阅读。
  • 谢谢,我看看这是否能解决我的问题。
  • 非常好,解决了访问问题。在这个过程中,我发现从普通存储上传其他文件时没有保存,但这只是服务器端最大文件大小的问题。感谢您对 SDCARD 问题的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多