2017-10-15 18 views
0

のAndroidサーバからPHPサーバに画像をアップロードしています。AndroidアプリからPhpサーバに画像をアップロードしようとしています。 イメージをアップロードする方法を、base64としてC#でエンコードし、php base64デコーダを使用して再度デコードしました。 すべては私が成功したサーバに画像をアップロードすることができますうまく働くが、私はそれをアップロードした後、イメージが私は、このエラーXamarin C#

このファイルを開くことができませんでした

を得た任意の画像ビューアを使用して開かない線量それはちょうどクロムまたはエッジのインターネットエクスプローラまたは他のインターネットエクスプローラの内部で動作します。 は、私はあなたが私にはWindowsイメージビューアなどの画像ビューアが 私のC#のコードは次のようである使用して、それを開くために役立つことを願っ:

public override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
{ 
    if ((requestCode == PickImageId) && (resultCode == Result.Ok) && (data != null)) 
    { 
     Stream stream = Activity.ContentResolver.OpenInputStream(data.Data); 
     Bitmap bitmap = BitmapFactory.DecodeStream(stream); 
     MemoryStream memStream = new MemoryStream(); 
     bitmap.Compress(Bitmap.CompressFormat.Webp, 100, memStream); 
     byte[] picData = memStream.ToArray(); 
     WebClient client = new WebClient(); 
     Uri uri = new Uri(statics_class.request_url+"request.php"); 
     NameValueCollection parameters = new NameValueCollection(); 
     parameters.Add("Image", Convert.ToBase64String(picData)); 
     parameters.Add("Image_id", image_id.ToString()); 
     parameters.Add("user_id", user_id); 
     client.UploadValuesAsync(uri, parameters); 
     client.UploadValuesCompleted += Client_UploadValuesCompleted; 
    } 
} 

そして、私のPHPコード:

if (isset($_POST['Image']) && isset($_POST['Image_id']) && isset($_POST['user_id'])) 

{ 

    $user_id = $_POST['user_id'] ; 
    $Image_id = $_POST['Image_id'] ; 
    $now = DateTime::createFromFormat('U.u',microtime(true)); 
    $id = $now->format('YmdHisu'); 
    $upload_folder = "upload/$user_id"; 
    if(!is_dir($upload_folder)){ 
     mkdir($upload_folder); 
    } 
    $path = "upload/$user_id/$id.jpg"; 

    $image = $_POST['Image'] ; 


    if(file_put_contents($path , base64_decode($image)) != false){ 

      printf('<img src="data:image/jpg;base64,%s" />', $image); 
     echo "successed "; 
     exit; 
    }else{ 
     echo "failed"; 
    } 


} 

答えて

1

Bitmap.CompressFormat.Webpを使用していませんが、 Bitmap.CompressFormat.PNG(または、損失のある写真の圧縮が問題ない場合はjpeg)。

WebPはまだ広くサポートされていない比較的新しいイメージ形式です。