首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP上传文件之前,如何通过下拉菜单命名文件?

在PHP上传文件之前,如何通过下拉菜单命名文件?
EN

Stack Overflow用户
提问于 2014-12-19 19:47:36
回答 1查看 259关注 0票数 1

其目的是让人们以音频的形式上传语言示例。文件应使用用户选择的语言名称。应以下拉菜单的形式提供语言列表。

一行中的操作: 1.用户从下拉列表中选择语言名称。2.用户选择本地音频文件。3.用户按upload按钮。4.脚本使用从下拉列表中选择的语言重命名用户提供的文件。5.理想情况下,它能够识别是否已经存在具有此名称的文件。如果是,它将给出以下文件编号,如"maltese01.wav“、”maltese02.wav“等。

由于php对我来说是新的,这就是我被困住的地方。任何帮助都是非常感谢的。这就是我到目前为止所做的工作。该脚本是从教程中采用的。

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

发布于 2014-12-19 20:01:26

这会给文件名增加一个随机数,你不应该直接使用文件名,因为这有安全风险,我把它留在了文件名的顶部,但如果我是你,我会把它完全去掉,然后直接制作你自己的文件名。这将搜索目录以查看filename是否已经存在,如果存在,则添加1。应该行得通,让我知道。

代码语言:javascript
复制
<?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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27565489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档