如何在PHP上传之前通过Dropdown菜单命名文件?

时间:2014-12-19 11:47:36

标签: php html web upload server

目的是让人们将语言示例上传为音频。文件应获得用户选择的语言的名称。语言列表应作为下拉菜单提供。

连续的行动:  1.用户从下拉列表中选择语言名称。  2.用户选择本地音频文件。  3.用户按下上传按钮。  4.脚本使用从下拉列表中选择的语言重命名用户提供的文件。  5.理想情况下,它能够识别是否已存在具有此名称的文件。如果是,则应提供以下文件编号,如“maltese01.wav,maltese02.wav”等。

因为php对我而言是新的,这就是我被困住的地方。任何帮助表示赞赏。这就是我到目前为止所做的工作。该脚本是从教程中采用的。

<?php

    if(isset($_FILES['sound'])){
        $errors= array();
        $file_name = $_FILES['sound']['name'];
    $file_size =$_FILES['sound']['size'];
    $file_tmp =$_FILES['sound']['tmp_name'];
    $file_type=$_FILES['sound']['type'];   
    $file_ext=strtolower(end(explode('.',$_FILES['sound']['name'])));

    $expensions= array("wav","aiff","mp3","m4a","mp4","ogg");       
    if(in_array($file_ext,$expensions)=== false){
        $errors[]="extension not allowed, please choose a WAV, MP3, MP4, M4A or OGG file.";
    }
    if($file_size > 8388608){
    $errors[]='Sorry. Your file ist quite large. Maximum file size is 8 MB';
    }               
    if(empty($errors)==true){
        move_uploaded_file($file_tmp,"sounds/".$file_name);
        echo "Thank you!";
    }else{
        print_r($errors);
    }
}
?>

<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="sound" />
<input type="submit"/>
</form>

1 个答案:

答案 0 :(得分:1)

这会在文件名中添加一个随机数,你不应该直接使用文件名,因为这是一个安全风险,我把它留在顶部,但如果我是你,我会把它全部带出去并立即自己做。这将搜索目录以查看文件名是否已存在,如果存在,则添加1。应该工作,让我知道。

<?php
$language=htmlentities($_POST['language']);
    if(isset($_FILES['sound'])){
        $errors= array();
        $file_name = $_FILES['sound']['name'];
    $file_size =$_FILES['sound']['size'];
    $file_tmp =$_FILES['sound']['tmp_name'];
    $file_type=$_FILES['sound']['type'];   
    $file_ext=strtolower(end(explode('.',$_FILES['sound']['name'])));

    $expensions= array("wav","aiff","mp3","m4a","mp4","ogg");       
    if(in_array($file_ext,$expensions)=== false){
        $errors[]="extension not allowed, please choose a WAV, MP3, MP4, M4A or OGG file.";
    }
    if($file_size > 8388608){
    $errors[]='Sorry. Your file ist quite large. Maximum file size is 8 MB';
    }               
    if(empty($errors)==true){

    ######################################## Directory Searcher    #############################################
    $random_number=rand();
    $file_name=$language.$random_number.$file_ext;
    foreach(glob('sounds/*') as $sound) 
    {   
        if($sound == $filename){$filename=$language.$random_number."1".$file_ext;
    }
    #############################################################################################################
        move_uploaded_file($file_tmp,"sounds/".$language.$file_name);
        echo "Thank you!";
    }else{
        print_r($errors);
    }
}
?>

<form action="" method="POST" enctype="multipart/form-data">
  <select name="language">
    <option value="maltese">Maltese</option>
    <option value="english">English</option>
   </select>
<input type="file" name="sound" />
<input type="submit"/>
</form>