2016-11-02 22 views
1

ユーザーの携帯電話から画像をWebサーバーにアップロードするためのHTMLとPHPスクリプトを作成しようとしています。ギャラリーから画像を選択するか、カメラで画像を取り込むかのどちらかをユーザーに促すという点では効果的です。私は絵をキャプチャすると、それが正常に情報を記入ファイルアップロードは、デスクトップでは動作しますが、カメラでは携帯電話では動作しません。

「foo.jpgという」

が、私は私のPHPスクリプトにデータを渡すとき、それは私にエラーを与える

"警告getimagesize()filenameは空ではありません....申し訳ありませんが、 ファイルのアップロード中にエラーが発生しました。

私が混乱しているのは、私のフォームでファイル名が空ではないということです。また、デスクトップコンピュータを使用してフォームを送信すると(ファイルアップロードのプロンプトが表示されます)、完璧に動作します。

HTML:

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" capture="camera" accept="image/*" name="imageFileToUpload"> 
    <label for="rma">RMA: </label> 
    <input type="text" name="rma"> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

</body> 
</html> 

PHP:

<?php 
$rma = $_POST['rma']; 
echo "RMA: " . $rma. "<br>"; 
$target_dir = "uploads/". $rma; 

if (file_exists($target_dir)==false) 
{ 
    if(mkdir ($target_dir)) 
    { 
     echo "folder created at: " .$target_dir . "<br>"; 
    } 
    else 
    { 
     echo "failed to create folder " . $target_dir. "<br>"; 
    } 
} 

$target_file = $target_dir ."/" .basename($_FILES["imageFileToUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 

if(isset($_POST["submit"])) 
{ 
    $check = getimagesize($_FILES["imageFileToUpload"]["tmp_name"]); 
    if($check !== false) 
    { 
      //echo "File is an image - " . $check["mime"] . "."; 
      $uploadOk = 1; 
    } 

    else 
    { 
     echo "File is not an image.<br>"; 
      $uploadOk = 0; 
    } 

    // Check if file already exists 
    if (file_exists($target_file)) 
    { 
     echo "Sorry, file already exists.<br>"; 
     $uploadOk = 0; 
    } 

    // if everything is ok, try to upload file 
    else 
    { 
     if (move_uploaded_file($_FILES["imageFileToUpload"]["tmp_name"], $target_file)) 
     { 
      echo "The file ". basename($_FILES["imageFileToUpload"]["name"]). " has been uploaded.<br>"; 
     } 

     else 
     { 
      echo "Sorry, there was an error uploading your file."; 
     } 
    } 
} 

?> 

私がこれまでに彼らの種類や患者の助けをみんなに感謝したいと私はすべての答えと指導を感謝しています。


UPDATE:

私はサファリとのIpadだけでなく、6.0.1マシュマロやChromeブラウザを実行しているAndroidデバイスを使用しています。ダンプファイルにいくつかの情報が表示されました。

RMA: 2468 
C:\wamp64\www\upload.php:5: 
array (size=5) 
    'name' => string 'image.jpg' (length=9) 
    'type' => string '' (length=0) 
    'tmp_name' => string '' (length=0) 
    'error' => int 1 
    'size' => int 0 
folder created at: uploads/2468 

(!) Warning: getimagesize(): Filename cannot be empty in C:\wamp64\www\upload.php on line 31 
Call Stack 
# Time Memory Function Location 
1 0.0006 376976 {main}() ...\upload.php:0 
2 0.0011 377176 createImageFile() ...\upload.php:20 
3 0.0012 377208 getimagesize () ...\upload.php:31 
File is not an image. 
Sorry, there was an error uploading your file. 

アンドロイド6.0.1クローム:

RMA: 1996 
C:\wamp64\www\upload.php:5: 
array (size=5) 
    'name' => string '20160322_125659.jpg' (length=19) 
    'type' => string '' (length=0) 
    'tmp_name' => string '' (length=0) 
    'error' => int 1 
    'size' => int 0 
folder created at: uploads/1996 

(!) Warning: getimagesize(): Filename cannot be empty in C:\wamp64\www\upload.php on line 30 
Call Stack 
# Time Memory Function Location 
1 0.0006 377880 {main}() ...\upload.php:0 
2 0.0012 378096 createImageFile() ...\upload.php:20 
3 0.0012 378128 getimagesize () ...\upload.php:30 
File is not an image. 
Sorry, there was an error uploading your file. 

作業は、コンピュータからのエコー:

RMA: 1234 
C:\wamp64\www\upload.php:5: 
array (size=5) 
    'name' => string '58832_300x300.jpg' (length=17) 
    'type' => string 'image/jpeg' (length=10) 
    'tmp_name' => string 'C:\wamp64\tmp\phpF5F3.tmp' (length=25) 
    'error' => int 0 
    'size' => int 3801 
The file 58832_300x300.jpg has been uploaded. 
New record created successfully 

それは送信しないように思えここ

は、iPadからのエコーでありますイメージタイプまたはファイルサイズ、モバイルデバイス使用時の名前のみ。何か案は?

+0

おかげで、私は全くわから上ではなかったです最高のフレーズ。 – mberna

+2

'$ _FILES [" imageFileToUpload "]'をダンプしようとしましたか?そこにデータがありますか?あなたの電話には何がありますか? – Armen

+1

こんにちは!それはCORSの問題のようです。別の場所からアップロードしようとするとエラーが発生します。詳しくは、wampサーバーのログファイルを参照してください。 –

答えて

1

これはCORSの問題のようです。

別の場所からアップロードしようとするとエラーが発生します。

detailledエラー情報のためのあなたのWAMPサーバのログファイルを参照してください...そのメカニズムのより多くの情報については

、以下を参照してください。タイトル編集フレッドためCORS wiki

関連する問題