2017-12-08 21 views
1

私はPHPプロジェクトでこの単純なアップロードとサイズ変更のイメージを使用してプロジェクトを行います。 https://gist.github.com/zeuxisoo/910107/483c7b6082dcc484d7b4cee21aad12650c53e416 アップロード後にファイルの名前を変更する方法がわかりません。 私はファイルの名前を変更して、データベースと同様にサーバーにアップロードしたいと思います。次のコードです:私は方法の多くを使用しアップロードしたファイルの名前をPHPのディレクトリに保存する前に名前を変更するにはどうすればいいですか?

public function run() { 
    $total = count($this->files); 
    for($i=0; $i<$total; $i++) { 
     if (empty($this->files['name'][$i]) === false) { 
      if (move_uploaded_file($this->files['tmp_name'][$i], $this->store_directory.'/'.$this->files['name'][$i]) == false) { 
       $this->errors['type'] = "run"; 
       $this->errors['file_name'] = $this->files['name'][$i]; 
      } 
     } 
    } 

    return empty($this->errors); 
} 

、例えばベース名 それができないことに、任意のアイデア?ありがとう

+0

可能な複製である[アップロードの名前を変更する方法ファイルをディレクトリに保存する前に?](https://stackoverflow.com/questions/18705639/how-to-rename-uディレクトリに保存する前にファイルをロードしました) –

+0

いずれかの回答を親切に受け入れてください... – GYaN

答えて

1

あなたは$newNameでこの

public function run() { 
    $total = count($this->files); 
    for($i=0; $i<$total; $i++) { 
     if (empty($this->files['name'][$i]) === false) { 

       $tempName = explode(".", $this->files['name'][$i]); 
       $newName = "IMAGE_NAME"; 
       $newfilename = $newName . '.' . end($tempName); 
      if (move_uploaded_file($this->files['tmp_name'][$i], $this->store_directory.'/'.$newfilename) == false) { 
       $this->errors['type'] = "run"; 
       $this->errors['file_name'] = $this->files['name'][$i]; 
      } 
     } 
    } 

    return empty($this->errors); 
} 

はあなたのファイルここ

+0

これは動作します!!!!!!あなたを本当に愛しています!!!!!!ありがとう!!!!!! – francoleung

+0

あなたが提案したように 'IMAGE_NAME'のような固定された文字列を使用すると、同じファイルが再びアップロードされると、サーバ上のそのような名前の画像が置き換えられる場合があります。そのような状況を避けるために役立ついくつかの名前の規則を使用する方が良い。私は私の答えでそれを世話しました。 –

1

move_uploaded_fileの代わりに、下記のコード例を使用してください。

$temp = explode(".", $_FILES["file"]["name"]); 
$newfilename = round(microtime(true)) . '.' . end($temp); 
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename); 
1

の新しい名前を生成することができます行うことができますことは、ソリューションの

public function run(){ 
    $total = count($this->files); 
    for($i=0; $i<$total; $i++){ 
     if(empty($this->files['name'][$i]) === false){ 
      $ext = substr(strtolower(strrchr($this->files['name'][$i], '.')), 1); //get the extension 
      $new_name = 'new-name'.date('dmY').$ext; 
      if (move_uploaded_file($this->files['tmp_name'][$i], $this->store_directory.'/'.$new_name) == false) { 
       $this->errors['type'] = "run"; 
       $this->errors['file_name'] = $this->files['name'][$i]; 
      } 
     } 
    } 
    return empty($this->errors); 
} 
+1

これは動作します!!!!!!あなたを本当に愛しています!!!!!!ありがとう!!!!!! – francoleung

関連する問題