2015-03-15 3 views
1

Я пытаюсь загрузить видео или изображения на свой сервер, используя php. Однако я получаю сообщение об ошибке кажется, что имя файла пусто, и я не понимаю, почему, код продолжает выполнение сценария с сообщением об ошибке и ничего не загружается в мою папкуЗагрузить видео или картинку с 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']

+0

Какую ошибку вы получаете? С такой небольшой информацией трудно диагностировать. – Rasclatt

+1

Вы называете свой вход в файл 'name =" picture-file-upload ", но вы проверяете' $ _FILES ['image'] '. Вероятно, это будет проблемой. То же самое с видео (именами). – Rasclatt

+0

Также вы используете избыточный код (т. Е. Вы дублируете код без уважительной причины). Поверните свой код загрузки в функцию и используйте переменную (ы) для проверки элементов в ваших '$ _POST' и/или' $ _FILES'. – Rasclatt

ответ

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'); ?> 
+1

Пытаюсь теперь благодаря –

+1

код все еще идет к еще \t \t \t \t \t возвращение «» ; \t Я проверил, правильно ли указан путь к папке. Я действительно не понимаю, где ошибка. –

+0

Позвольте мне проверить это на моем сервере и посмотреть, не получаю ли я такую ​​же ошибку. – Rasclatt

Смежные вопросы