1

httpポストを使用してファイルをアップロードしようとしていますが、携帯電話でmicro-sdカードからファイルを使用しようとすると、ファイルが作成されないため、アップロードできません。SDカードではなく、メインの電話ストレージからファイルを選択するときに完全に機能します.

ファイル選択ダイアログに外部ライブラリを使用しています。SD カードから画像を選択しようとすると、次のように返されます (この例では、カメラ アプリから撮影した写真)。 /sdcard-ext/dcim/Camera/2012-07-02_12-28-19_548.jpg

これは、電話のOSファイルで見つけたランダムな画像から返されます。 /sdcard/DCIM/.thumbnails/1331049921270.jpgこれはSDカードにもあるように見えます(少なくとも私にはそうです)が、これは間違いなく電話のストレージです.

ファイルのアップロードに現在使用しているコードは次のとおりです。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 をターゲットにしています。

4

1 に答える 1

1

追加

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

注: また、logcat に「許可が拒否されました」というエラーが表示されるはずです。これは、この問題を警告しているはずです。

編集: 申し訳ありませんが、必要な外部ストレージから読み取るだけです:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
于 2012-07-04T09:33:53.140 に答える