Не удается загрузить несколько изображений с видео - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь загрузить несколько изображений на сервер, используя одно поле ввода для загрузки видеофайла. Изображения успешно загружены, но если они содержат видео или видео, они не могут быть перемещены в каталог, но путь к видео сохраняется в базе данных. Вот мой код:

publi sh. php

$file_name = '';
    $tmp_name= $file_type='';
    $data = '';
    $folder = "mobile uploads/$chare/images/";
    $video = "mobile uploads/$chare/videos/";
    $dir = '';
    if (!empty($_FILES['media']['name'])) {
      foreach ($_FILES['media']['name'] as $key => $val) {
        $file_name = $_FILES['media']['name'][$key];
        $tmp_name = $_FILES['media']['tmp_name'][$key];
        $file_type = $_FILES['media']['type'][$key];
        $extension = pathinfo($_FILES["media"]["name"][$key], PATHINFO_EXTENSION);
        $dir = $folder. md5($_FILES["media"]["name"][$key]) . '.'.$extension;
        $vid = $video. md5($_FILES["media"]["name"][$key]) . '.'.$extension;

        if (($file_type == "image/jpeg") || ($file_type == "image/png") || ($file_type == "image/gif")) {
          if(compress($tmp_name, $dir,50)){
            $image_link .= $dir.',';
          }
        }else{
          echo "invalid";
        }

      }
    }
      //echo $video_link;

    if there is a video
      $file_name = $_FILES['video']['name'];
      $tmp_name = $_FILES['video']['tmp_name'];
      $file_type = $_FILES['video']['type'];
      $extension = pathinfo($_FILES["video"]["name"], PATHINFO_EXTENSION);
      $dir =  md5($_FILES["video"]["name"]) . '.'.$extension;

      if (isset($file_name)) {
        if (($extension == "mp4") || ($extension == "ogg") || ($extension == "webm")){
          if(move_uploaded_file($tmp_name, $video.$file_name)){
            $video_link = $video.$dir;
            echo $video_link;
          }
        }else{
          echo "invalid";
        }
      }
      if (move_uploaded_file($tmp_name, $dir)) {
        $video_link = $dir;
      }


    if (!empty($_FILES['audio']['name'])) {
      # code...
    }
    //saving post to db
    if($video_link==null AND $image_link == null AND $post == null ){
       echo 'empty'; 
    }else{

        $save_post = mysqli_query($con,"INSERT INTO wall_posts(user_id, post_body, images, date_posted, posted_to,videos,video_type) VALUES ('$user_id','$post','$image_link', '$date','$to','$video_link','$file_type')")or die("Error saving post. ".mysqli_error($con));
        if ($save_post) {
          echo "saved";
        }else{
          echo "error ".mysqli_error($con);
        }
        if (!empty($image_link)) {
          mysqli_query($con,"INSERT INTO uploads (user_id,link,date_added,type) VALUES('$user_id','$image_link','$date','Image')");
        }
    }

, а вот мой ввод

    <div class="form-group pl-0 pr-0 pb-0">
        <textarea cols="3" name="post" class="form-control" placeholder="What do you think <?= $user['fname']?>?" style="border: none; resize: none;" ></textarea>
        <input type="file" onchange="preview_image()" id="file" style="display: none;" name="media[]" multiple >
        <!--input type="file" onchange="" id="video" style="display: none;" name="video">
        <input type="file" onchange="" id="audio" style="display: none;" name="audio">
        <input type="file" onchange="" id="doc" style="display: none;" name="doc" multiple=""-->
   </div>
   <div id="image_preview"></div>
   <div class="input-labels mt-0 pt-2 pb-2 form-group" style="border-top: 1px #ebedf2 solid;" >
        <label for="file" class="mr-3" title="image"><i class="icon-picture" style="font-size: 20px; cursor: pointer;"></i></label>
        <!--label for="video" class="mr-3" title="Video"><i class="icon-film" style="font-size: 20px; cursor: pointer;"></i></label>
        <label for="audio" class="mr-3" title="Audio Clip"><i class="icon-music-tone" style="font-size: 20px; cursor: pointer;"></i></label>
        <label for="doc" class="mr-3" title="Documents"><i class="icon-paper-clip" style="font-size: 20px; cursor: pointer;"></i></label-->
        <button type="submit" name="publish" class="btn btn-sm btn-round btn-info pull-right">Publish</button>
    </div>

и здесь мой js

$('#publishPost').on('submit', function(e){  
            e.preventDefault();  
            var preview = document.getElementById('image_preview');
            var formc = document.getElementById('publishPost');
            var p = document.getElementById('post');
            $.ajax({  
                url: "publish_post",  
                type: "POST",  
                data: new FormData(this),  
                contentType: false,  
                processData:false,  
                success: function(data){ 
                    //$('#publishPost').reset();
                     preview.innerHTML='';
                    if (data=='saved') {
                        //Notify
                        $.notify({
                            icon: 'flaticon-alarm-1',
                            title: 'Success!',
                            message: 'Post feed created successfully',
                        },{
                            type: 'info',
                            placement: {
                                from: "top",
                                align: "right"
                            },
                            time: 1000,
                        });
                    }else if(data=='invalid'){
                        //Notify
                        $.notify({
                            icon: 'fas fa-exclamation',
                            title: 'Ops!',
                            message: 'Incorrect File format. Try again!',
                        },{
                            type: 'danger',
                            placement: {
                                from: "top",
                                align: "right"
                            },
                            time: 1000,
                        });
                    }else if (data=='empty') {
                        //Notify
                        $.notify({
                            icon: 'flaticon-alarm-1',
                            title: 'Ops!',
                            message: 'Can not create empty Post',
                        },{
                            type: 'warning',
                            placement: {
                                from: "top",
                                align: "right"
                            },
                            time: 1000,
                        });
                    }else{
                        //Notify
                        $.notify({
                            icon: 'fas fa-exclamation',
                            title: 'Error!',
                            message: data,//'Something went wrong! Please try again',
                        },{
                            type: 'danger',
                            placement: {
                                from: "top",
                                align: "right"
                            },
                            time: 1000,
                        });
                    }  

                    formc.reset();
                }  
           }).fail(function (jqXHR, textStatus, error) {enter code here
                // Handle error here
                alert(jqXHR.responseText)
            });  
        });

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...