2017-05-11 10 views
1

アンドロイドアプリからサーバーに画像ファイルをアップロードしようとしています。Android appからphp move_uploaded_fileに画像をアップロード

:これは move_uploaded_file関数で使用されるように私のウェブサイトやiOSアプリからの着信画像を処理している私のPHPファイルです:私はBase64でエンコードされた文字列を持っているとき、アンドロイドに私がポイントに来

<?php include '../../../init.php'; 

    $post_id = $_GET['post_id']; 

    $image_temp = $_FILES['image']['tmp_name']; 
    $image_name = $_FILES['image']['name']; 
    $image_ext = strtolower(end(explode('.', $image_name))); 

    upload_page_image($image_temp, $image_ext, $post_id); 

params.put("image",imageToString(bitmap)); 

はその後、私はこのような私のPHPファイルにこれを持参:

<$php 
    .... 
    $image = base64_decode(_POST['image']); 
    ... 

しかし、今、どのように$_FILES['image']['temp_name']$_FILES['image']['name']にして、私はブレーキにそれを行いますか?他のすべての例は、file_put_contentsを使用しています。私はそれがmove_uploaded_filesであることが必要です。

何か助けていただければ幸いです。 おかげ

答えて

0

を働いたあなたは

+0

何が起こっているのか教えてください...... –

0

[OK]をPHPで使用するためmove_uploaded_filesマルチパートフォームデータを使用して画像を提出しなければならない、それは私が今までに通過した最も困難なものでした。問題は、私がPHP関数file_put_contents()を使用すると、まずAndroidアプリケーション側ですべてを簡単にし、ビットマップをBase64に変換してPHPファイルに渡すことです。しかし... 非常に重要なことが1つ失われたこのプロセスで....それは$exif['Orientation']の場合exif_read_dataを使用しています。このパラメータはもう存在しません。

バックAndroidアプリに行くとPHPにファイルを送信する前に画像の向きを取得しようとしたときに今、例えば、以下のような標準機能:

ExifInterface exifReader = new ExifInterface(mFilePath); 
exifReader.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1); 

..または類似は動作しません。それは常に0常に

ソリューションは、グライドhttps://github.com/bumptech/glideライブラリを使用してから来て、使用して、現在の画像の向きを取得返します

InputStream is = getActivity().getContentResolver().openInputStream(originalUri); 
int orientation = new ImageHeaderParser(is).getOrientation(); 

あなたが向きを取得したら、あなたはBase64で配向番号とプロセスのアップロードなどの画像を渡し、オリエンテーションを変更するなど。

関連する問題