2017-01-12 6 views
1

私はサーバーに画像をアップロードすることができるモバイルアプリを構築しようとしています。しかし、私のPHPスクリプトには問題があります。スクリーンショットのデータURIをアップロードするとうまくいきますが、画像のURIをアップロードすると、Webサーバーにアップロードされた画像が壊れてしまいます。誰でも私がスクリプトの何が間違っているかを確認する手助けはできますか?PHP - モバイルデバイスからWebサーバーにファイルuriをアップロードするには?

<?php 
//Generate a folder if it doesn't exist 
if (!file_exists('user_images/')) 
{ 
    mkdir('user_images', 0755, true); 
} 

//Get submitted data by user 
if (isset($_POST['CanvasPic'])) { 
    $img1 = $_POST['CanvasPic']; 
} else { 
    $img1 = ''; 
} 

if (isset($_POST['name'])) { 
    $name = $_POST['name']; 
} else { 
    $name = ''; 
} 

define('UPLOAD_DIR', 'user_images/'); 

//Remove some useless string before to create image properly 
//Decode base64 then generate new name 
if ($img1) { 
    $img1 = str_replace('data:image/jpeg;base64,', '', $img1); 
    $img1 = str_replace(' ', '+', $img1); 
    $data1 = base64_decode($img1); 
    $file1 = UPLOAD_DIR . $name . "_" . uniqid() . '.jpeg'; 
    $success = file_put_contents($file1, $data1); 
} 

//Output a URL where is saved. 
$locator = $file1; 

//Display a text, otherwise if error happened. 
print $locator ? $file1 : 'Could not save the file!'; 
?> 

答えて

1

は、私はあなたがそれをモバイルデバイスへのファイルや画像のアップロードPHPスクリプトを使用した方が良いです$ _FILESスーパーグローバル配列をPHPと思います。

base64_decode() - サーバーにファイルをアップロードするには時間がかかります。

1

下記のコードを試してください。

$name = isset($_POST['name']) ? $_POST['name'] : ''; 
    $uploadFileName = $name."_".uniqid().".jpeg"; 
    define('UPLOAD_DIR', 'user_images/'); 
    if (move_uploaded_file($_FILES['CanvasPic']['tmp_name'],UPLOAD_DIR.$uploadFileName)) { 
     echo "Uploaded."; 
    } else { 
     echo "File was not uploaded."; 
    } 
+0

ファイルが作成されていません。 –

関連する問題