2014-01-15 2 views
5

私はレスポンシブウェブサイトでファイルをアップロードするのにとても簡単なコードを使用しています。しかし、iPhoneを使用して画像をアップロードすると、画像名は実際の画像名に関係なく常にimage.jpgになります。iPhoneでのHTMLアップロード(iOS):ファイル名は常に同じです(image.jpg、image.png、...)

この問題の回避策はありますか?

<?php 

    if ($_SERVER['REQUEST_METHOD'] === 'POST') 
    { 
     print "<pre>"; 
     echo 'post object info:'; 
     print_r($_FILES); 
     print "</pre>"; 
    } 

?> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>File Upload Test for iphone</title> 
</head> 
<body> 
    <form enctype="multipart/form-data" method="POST"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="512000" /> 
     <input name="userfile" type="file" /> <br /> 
     <input type="submit" value="Send File" /> 
    </form> 
</body> 
</html> 

デモ:http://codepad.viper-7.com/VnTfb3/55dev

私は目的をデバッグするための小さなコードで、このサンプル・ページを作成しましたか?

+0

何らかのセキュリティ上の理由からアップルの制限になる可能性があります。 javascript FILE APIを使用して、アップロードするイメージ名を取得できます。この投稿を参照してください。http://stackoverflow.com/questions/15876584/mobile-safari-image-upload-their-sizes –

+0

私はこの問題がiOS10 Safariで修正されていることに気付きました。 – AndyGaskell

答えて

1

同じ問題が発生しましたが、アップロードスクリプトで3つの画像を使用していました。最も簡単で簡単な解決策は、現在の日付と時刻を任意の形式(エポックはおそらくこれに最適です)とファイル名を区別する文字または文字の組み合わせに追加することでした。

$date = date('U'); 

$filename1 = str_replace(' ', '%20', $_FILES['image1']['name']); 

$target1 = 'images/'; 

$file1 = $_FILES['image1']; 

$target1 .= $date.'A'.$file1['name']; 

$fileName1 = $date.'A'.$file1['name']; 

上記は私のスクリプトに使用したコードの一部ですが、スクリプトは明らかにあなたとは大きく異なります。ファイルを処理してアップロードしているときにファイルの名前を変更する方法を示すために貼り付けました。

関連する問題