質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

解決済

ギャラリーから選択した写真がアップロードできない

h_h0323
h_h0323

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

2回答

-1評価

0クリップ

2946閲覧

投稿2016/01/09 19:17

編集2016/01/10 16:39

画像アップロード機能をつくっており、丸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; }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

退会済みユーザー

退会済みユーザー

2016/01/14 05:22

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。