2017-05-22 19 views
-1

ファイルに自分のデータベースにファイルをアップロードできる管理ページがあります。問題はファイルの名前にピリオド(。)が付いているときにスクリプトが拡張子として読み取ります。たとえば、「flower1.1.jpg」という名前のファイルをアップロードすると、jpg拡張子を付けずに「flower1.1」となりました。 私のPHPアップロードスクリプト:拡張子として認識するファイル名のピリオド

<?php 

function upload_file() 
{ 
    if(isset($_FILES["user_image"])) 
    { 
     $extension = explode('.', $_FILES['user_image']['name']); 
     $new_name = $extension[0] . '.' . $extension[1]; 
     $destination = './upload/' . $new_name; 
     move_uploaded_file($_FILES['user_image']['tmp_name'], $destination); 
     return $new_name; 
    } 
} 

function get_image_name($user_id) 
{ 
    include('db3.php'); 
    $statement = $connection->prepare("SELECT image FROM users1 WHERE id = '$user_id'"); 
    $statement->execute(); 
    $result = $statement->fetchAll(); 
    foreach($result as $row) 
    { 
     return $row["image"]; 
    } 
} 

function get_total_all_records() 
{ 
    include('db3.php'); 
    $statement = $connection->prepare("SELECT * FROM users1"); 
    $statement->execute(); 
    $result = $statement->fetchAll(); 
    return $statement->rowCount(); 
} 

?> 

答えて

1

なぜあなたも拡張機能を取得しようとしていますか?あなただけの爆発と再び一緒に戻ってそれらをconcatingしている:

function upload_file() 
{ 
    if (isset($_FILES["user_image"])) 
    { 
     $destination = './upload/' . $_FILES['user_image']['name']; 
     move_uploaded_file($_FILES['user_image']['tmp_name'], $destination); 
     return $_FILES['user_image']['name']; 
    } 
} 

注意の言葉として、ユーザーが唯一の画像をアップロードしていることを確認するチェック:

function upload_file() 
{ 
    static $valid_formats = array(
     'image/jpeg', 
     'image/png', 
     'image/gif' 
    ); 

    if (isset($_FILES['user_image'])) 
    { 
     $finfo = new finfo(FILEINFO_MIME_TYPE); 
     $mime = $finfo->file($_FILES['user_image']['tmp_name']); 

     if (!in_array($mime, $valid_formats)) 
     { 
      throw new RuntimeException('Invalid file format.'); 
     } 

     $destination = './upload/' . $_FILES['user_image']['name']; 
     move_uploaded_file($_FILES['user_image']['tmp_name'], $destination); 
     return $_FILES['user_image']['name']; 
    } 
} 
+0

私はあなたの最初のコードと、それを試してみましたdoesntのそれは$ new_nameを認識しません。 function –

+0

@AppleJohnええ、 '$ new_name'はもう存在しません。私の部分に小さなタイプミス。 '$ _FILES ['user_image'] ['name']'を返すだけです。 – FrankerZ

+0

ありがとうございました –

関連する問題