
画像アップロード機能をつくっており、丸2日ほどなやんでおります。
機能内容
・当アプリ内でカメラを選択すれば、標準カメラが立ち上がり、写真をセットし、アップロードをします。
・当アプリ内でギャラリーを選択すれば、標準のギャラリーorフォトが立ち上がり端末内の写真をセットし、アップロードをします。
・アップロード先はPHPで受け取り、PHPでサーバー内に保存するようにしております。
問題点
あらかじめカメラを使って写真を撮影した(当アプリ外でカメラ機能を使用し撮影した)場合、
当アプリ内でギャラリーからあらかじめ撮影された写真を選択した画像がPHPで受け取れずアップロードができない状態です。
原因がわからず困っております。
お分かりのかたがいらっしゃいましたら宜しくお願いいたします。
lang
HttpPost httpPost = new HttpPost(url); httpPost.setHeader("enctype", "multipart/form-data"); ResponseHandler<String> responseHandler = new BasicResponseHandler(); MultipartEntityBuilder multiPartEntityBuilder = MultipartEntityBuilder.create(); multiPartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); multiPartEntityBuilder.setCharset(Charset.forName("UTF-8")); File file = new File(fileName); FileBody bin = new FileBody(file); multiPartEntityBuilder.addPart("upfile", bin); HttpEntity postEntity = multiPartEntityBuilder.build(); httpPost.setEntity(postEntity); ReceiveStr = httpClient.execute(httpPost, responseHandler);
lang
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (!file_exists($mk_dir)) { mkdir( $mk_dir, 0755 ); } if (move_uploaded_file($_FILES["upfile"]["tmp_name"], $_FILES["upfile"]["name"])) { echo "UPLOAD Finished."; } else { echo "UPLOAD failured."; } } else { echo "File has not been selected."; }
lang
var_dump($_FILES["upfile"]); をしたところ、 ■当アプリ内でカメラを選択し、写真を撮影してアップロードした場合 array() { ["name"]=> "ファイル名.png" ["type"]=> "application/octet-stream" ["tmp_name"]=> "/var/tmp/名前" ["error"]=> 0 ["size"]=> "サイズ" } ■当アプリ内でギャラリーを選択し、スクショやサイトなどで保存された画像をアップロードした場合 array() { ["name"]=> "Screenshot_ファイル名.jpg" ["type"]=> "application/octet-stream" ["tmp_name"]=> "/var/tmp/名前" ["error"]=> 0 ["size"]=> "サイズ" } array() { ["name"]=> "Screenshot_ファイル名.png" ["type"]=> "application/octet-stream" ["tmp_name"]=> "/var/tmp/名前" ["error"]=> 0 ["size"]=> "サイズ" } ■当アプリ外で撮影した写真を当アプリ内でギャラリーを選択し、撮影した写真を選択した場合 array() { ["name"]=> "DSC_****.JPG" ["type"]=> "" ["tmp_name"]=> "" ["error"]=> 1 ["size"]=> "" }
となります。
宜しくお願いします。
■ギャラリーから取得した場合
onActivityResult
lang
try { Uri uDataUri = intent.getData(); Bitmap bmp = BrandImage.getContentBitmapForUri(activity, uDataUri, Constants.iThumSizeW, Constants.iThumSizeH); if (bmp == null) { return; } String thumName = uDataUri.toString(); ImageView imgIdentification; if (requestCode == ACTRES_PICKER) { // パス名取得 sImagePath = common.getPath(me, uDataUri, requestCode); imgIdentification = (ImageView) activity.findViewById(R.id.imgItem); sImage = thumName; bBitThum = bmp; bImage = true; } imgIdentification.setImageBitmap(bmp); } catch (Exception e) { Toast.makeText(activity, "err Exception 3934", Toast.LENGTH_LONG).show(); }
common.getPath
lang
public String getPath(Context context, Uri uri, Integer requestCode) { Cursor cursor; ContentResolver contentResolver = context.getContentResolver(); if (Build.VERSION.SDK_INT < 19) { String[] columns = { MediaStore.Images.Media.DATA }; cursor = contentResolver.query(uri, columns, null, null, null); } else { String id = DocumentsContract.getDocumentId(uri); String selection = "_id=?"; String[] selectionArgs = new String[]{id.split(":")[1]}; String[] columns = { MediaStore.MediaColumns.DATA }; cursor = contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, selection, selectionArgs, null); } cursor.moveToFirst(); String path = cursor.getString(0); cursor.close(); return path; }

まだ回答がついていません
会員登録して回答してみよう