【问题标题】:Upload video or picture with php用php上传视频或图片
【发布时间】:2015-05-17 10:08:46
【问题描述】:

我正在尝试使用 php 将视频或图片上传到我的服务器。但是我不断收到错误,文件名似乎为空,我不明白为什么,代码不断执行显示错误的脚本,并且没有任何内容上传到我的文件夹

这是我的代码:

<div class="container" id="step2-video" style="display:none; margin-top:100px" >
                <div class="row">
                    <div class="col-lg-4 col-md-offset-4">
                        <form id="video_uploader" action="ad_creator.php" method="post" enctype="multipart/form-data">
                            <div id="btn-upload-video">
                                <span class="file-wrapper btn ad-choice">
                                    <input type="file" id="video-file-upload" name="video-file-upload" accept="video/mp4"/> 
                                    <span class="button">Choose a video</span>                              
                                </span>
                            </div>                              
                            <div id="video-preview" style="display:none" >      
                                <span class="file-wrapper btn ad-choice">   
                                    <?php

                                    ?>                      
                                    <input type="submit" name="upload_video" value="Submit" style="margin-left:auto" />
                                    <span class="button">Comfirm</span>
                                </span>
                            </div>
                        </form>                 
                    </div>
                </div>
            </div>  

            <!-- 
            Step 2 for pictures of the editor
            -->

            <div class="container" id="step2-picture" style="display:none; margin-top:100px" >
                <div class="row">
                    <div class="col-lg-4 col-md-offset-4">
                        <form id="picture_uploader" action="ad_creator.php" method="post" enctype="multipart/form-data">
                            <div id="btn-upload-picture">
                                <span class="file-wrapper btn ad-choice">
                                    <input type="file" id="picture-file-upload" name="picture-file-upload" accept="image/gif, image/jpeg, image/jpg, image/png"/> 
                                    <span class="button">Choose a picture</span>                                
                                </span>
                            </div>                              
                            <div id="picture-preview" style="display:none" >
                                <div id="imagePreview"></div>
                                <br>        
                                <span class="file-wrapper btn ad-choice">                           
                                    <input type="submit" name="upload_picture" value="Submit" style="margin-left:auto" />
                                    <span class="button">Comfirm</span>
                                </span>
                            </div>
                        </form> 
                    </div>
                </div>
            </div>  
            <?php
                if (isset($_POST['upload_picture'])){

                    $image_name = isset ($_FILES['image']['name']) ? $_FILES['image']['name'] : '' ;
                    $image_type = isset($_FILES['image']['type']) ? $_FILES['image']['type'] : '';
                    $image_size = isset($_FILES['image']['size']) ? $_FILES['image']['size'] : '';
                    $image_tmp_name = isset ($_FILES['image']['tmp_name']) ? $_FILES['image']['tmp_name'] : '';

                    if($image_name == ''){
                        echo "<script> alert ('Error occured for picture upload')</script>";
                        exit();             
                    } else {
                        move_uploaded_file ($image_tmp_name, "uploads/picture/$image_name");
                        echo "<script> alert ('sucess for puciture upload')</script>";
                    }
                }   

                if (isset($_POST['upload_video'])){

                    $video_name = isset ($_FILES['video']['name']) ? $_FILES['video']['name'] : '' ;
                    $video_type = isset($_FILES['video']['type']) ? $_FILES['video']['type'] : '';
                    $video_size = isset($_FILES['video']['size']) ? $_FILES['video']['size'] : '';
                    $video_tmp_name = isset ($_FILES['video']['tmp_name']) ? $_FILES['video']['tmp_name'] : '';

                    if($video_name == ''){
                        echo "<script> alert ('Error occured for video upload')</script>";
                        exit();             
                    } else {
                        move_uploaded_file ($video_tmp_name, "uploads/video/$video_name");
                        echo "<script> alert ('Sucess for video upload')</script>";
                    }
                }   

            ?>  

解决方案

来自 Rescaltt,谢谢。 我正在检查错误的文件输入, 我正在检查 $_FILES['image']['name'] 而不是 $_FILES['picture-file-upload']['name']

【问题讨论】:

  • 您将文件输入命名为name="picture-file-upload",但您正在检查$_FILES['image']。很可能这将是一个问题。与视频名称相同。
  • 好的,然后看看我的 cmets。我认为您没有检查正确的名称
  • 可能应该检查$_FILES['picture-file-upload']['name']等。
  • 这可行,但是由于某种原因我的视频图片仍未上传
  • 我的意思是代码现在进入 } else { move_uploaded_file ($video_tmp_name, "uploads/video/$video_name"); echo ""; } 并显示警报但是,图片未上传到我的文件夹

标签: php html image video upload


【解决方案1】:

尝试使用一个函数来做这两个。需要注意的是,您可能应该做一些检查和平衡:

  1. 清理文件名以便采取措施。
  2. 在绝对路径中包含您的文档根目录,或确保您拥有正确的相对路径。
  3. 您可能需要检查上传文件夹是否存在,如果不存在则创建。
  4. 检查上传成功if(move_uploaded_file(...etc.

<?php 
function MyUploader($uploadtype = 'picture',$savedir = '/uploads/')
    {
        $name       =   (isset($_FILES[$uploadtype.'-file-upload']['name']))? $_FILES[$uploadtype.'-file-upload']['name'] : '' ;
        $type       =   (isset($_FILES[$uploadtype.'-file-upload']['type']))? $_FILES[$uploadtype.'-file-upload']['type'] : '';
        $size       =   (isset($_FILES[$uploadtype.'-file-upload']['size']))? $_FILES[$uploadtype.'-file-upload']['size'] : '';
        $tmp_name   =   (isset($_FILES[$uploadtype.'-file-upload']['tmp_name']))? $_FILES[$uploadtype.'-file-upload']['tmp_name'] : '';

        if(empty($name)) 
            return "<script> alert ('Invalid file name.')</script>";             
        else {
            // Make sure you include your ROOT DIRECTORY / correct local path
            $upload_dir =   $_SERVER['DOCUMENT_ROOT'].$savedir.$uploadtype."/";
            // May want to make the directory if not exists
            if(!is_dir($upload_dir))
                mkdir($upload_dir,0755,true);
            // You should check that it worked with if(move_upload_file(...etc                  
            if(move_uploaded_file($tmp_name, $upload_dir.$name))
                return "<script> alert ('$uploadtype uploaded successfully')</script>";
            else
                return "<script> alert ('Could not save file to server.')</script>";
        }
    }

    if(isset($_POST['upload_picture']))
        echo MyUploader('picture');

    if(isset($_POST['upload_video']))
        echo MyUploader('video'); ?>

【讨论】:

  • 代码仍然转到 else return "";我检查了文件夹的路径是否正确。我真的不明白错误可能出在哪里。
  • 刚刚做了,这里又是 print_r 与 Array ( [picture-upload] => Array ( [name] => SAM_1422.JPG [type] => [tmp_name] => [error] => 1 [大小] => 0 ) )
  • 在 php.ini 中有什么特别的配置吗?!我没有修改过,有什么问题?
  • 我正在使用 Xampp,所以我想我可以编辑我的 php.ini,但是它仍然无法正常工作,所有这些帖子都在谈论文件的大小。
  • 您可能希望搜索有关文件上传的 Xampp 问题。上面的代码有效,所以这部分解决了。您的问题与您的服务器有关....不幸的是,我对运行 Xampp 一无所知。 :\
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 2013-07-15
相关资源
最近更新 更多