2011-02-28 10 views
1

許可:PHPのアップロード - これは私が現在持っているものであるだけでJPGファイル

$file_name = $HTTP_POST_FILES['uid']['name']; 
$user= 'FILENAME'; 
$ext = pathinfo($file_name, PATHINFO_EXTENSION); 
$new_file_name=$user . '.' . $ext; 
$path= "uploads/images/users/".$new_file_name; 
if($ufile !=none) 
{ 
    if(copy($HTTP_POST_FILES['uid']['tmp_name'], $path)) 
    { 
    echo "Successful<BR/>"; 
    echo "File Name :".$new_file_name."<BR/>"; 
    echo "File Size :".$HTTP_POST_FILES['uid']['size']."<BR/>"; 
    echo "File Type :".$HTTP_POST_FILES['uid']['type']."<BR/>"; 
    } 
    else 
    { 
    echo "Error"; 
    } 
} 
+0

あなたはgetimagesize()メソッドは、(あなたの[他の質問]に示した使用することができますhttp://stackoverflow.com/questions/5141032/ php-image-upload-rename-without-losing-extension) –

+0

これは質問をする最良の方法ではありません。あなたの問題は何ですか?何が助けを必要としますか?上記のコードはあなたが期待することをしますか? – diagonalbatman

+1

ちょうどFYI、 'HTTP_POST_FILES'は*年*に非推奨です。あなたがPHP4用に開発しなければ '$ _FILES'を使用してください(まだ誰もそれをしていますか?) – Piskvor

答えて

1
<?php 

$allowedTypes = array('image/jpeg'); 

$fileType = $HTTP_POST_FILES['uid']['type']; 

if(!in_array($fileType, $allowedTypes)) { 
    // do whatever you need to say that 
    // it is an invalid type eg: 
    die('You may only upload jpeg images'); 
} 

?> 

は、このことができます願っています。また、なぜ$ _FILESの代わりにHTTP_POST_FILESを使用していますか?古いバージョンのPHPで作業していますか?

+2

このメソッドは、ブラウザから送信されたコンテンツタイプのデータに依存して操作できることを指摘しておきましょう。 –

+0

はい、本当にありがとうございます。 –

+0

私は今コピーとHTTP_POST_FILESを使用していますが、まだjpgのみを許可する方法は変わっています - ivが試したすべてがエラーを返しますが、アップロードやアップロードは何も含まれていません。 jpgファイル – Sean

0

これまで決してそれを信じたことはありません。それは安全ではなく、潜在的にあなたのサーバーに悩まされる人々につながる可能性があります。そのようにそれを使用して、この代わりにhttp://ar.php.net/imagecreatefromjpeg

<?php 
function LoadJpeg($imgname){ 
    /* Attempt to open */ 
    $im = @imagecreatefromjpeg($imgname); 

    if(!$im){ 
     throw new InvalidArgumentException("$imgname is not a JPEG image"); 
    } 

    return $im; 
} 
?> 

をお試しください:

$uploadDir = "/path/to/uploads/directory"; 
$handle = LoadJpeg($_FILES['uid']['tmp_name']); 
imagejpeg($handle, $uploadDir.DIRECTORY_SEPARATOR.$_FILES['uid']['name']); 
+0

私は今コピーとHTTP_POST_FILESを使用することから変更しましたが、jpgだけを許可する方法はまだ分かっていません - 試みたすべてがエラーを返しますが、jpgファイルを含めて何もアップロードまたはアップロードしません。 – Sean

+0

これを行うと、 JPEGを使用していますが、実際のアップロードが途中まで終了したら、おそらくフラッシュでアップロードする必要があります –

関連する問題