简体   繁体   English

如何创建 JavaScript 条件来显示视频的图像预览或图片的图像预览?

[英]How can I create a JavaScript condition to display either image preview of a video or image preview of a picture?

On image preview, when I select a video, an empty image box is displayed on the right side of the video image preview.在图片预览时,当我选择一个视频时,视频图片预览右侧会显示一个空的图片框。 And when I select a picture, an empty space is displayed on the left side of the picture image preview.当我选择一张图片时,图片预览左侧会显示一个空白区域。 So both <video> tag and <img> tag are displayed together.所以<video>标签和<img>标签一起显示。

Here is the code of the relevant HTML part, which is inside a form tag:这是相关HTML部分的代码,它位于表单标签内:

<form  method="post" enctype="multipart/form-data">

  <label class="input-group-prepend" for="image_name">
    <i class="fa fa-camera" data-toggle="tooltip" title="Attach a photo or video"></i> 
    <video class="image_Preview"></video>
    <img class="image_Preview">
  </label>
  <input id="image_name" name="image_name" class="file" type="file" data-count="0" style="display: none;">

</form>

Here is the relevant jQuery part:这是相关的jQuery部分:

$(document).on('click change', '.file, .submit', function() {

if ($(this).is('.file')) {
     $(this).closest('.input-group').find('.image_Preview').attr('src', window.URL.createObjectURL(this.files[0]))
      .css({"width":"250px","height":"150px"});

I want either <video> tag or <img> tag to be displayed, but not both.我想要显示<video>标签或<img>标签,但不能同时显示。

Here I created the following code.在这里,我创建了以下代码。 First, I take the file extension from input tag to see whether it is jpg or mp4.首先,我从 input 标签中获取文件扩展名,看看它是 jpg 还是 mp4。 If the file extension is jpg it goes to if condition, and if it is mp4 it goes to else condition.如果文件扩展名是 jpg,则转到if条件,如果是 mp4,则转到else条件。 The problem is that I cannot make var ext global.问题是我无法将var ext全局。 It is local no matter how much I try to make it global.无论我如何尝试使其全球化,它都是本地的。

<form  method="post" enctype="multipart/form-data">

  <label class="input-group-prepend" for="image_name">
    <i class="fa fa-camera" data-toggle="tooltip" title="Attach a photo or video"></i> 

<script>
  function getFile(filePath) {
    return filePath.substr(filePath.lastIndexOf('\\') + 1).split('.')[0];    
}

var ext;

function getoutput() {
  outputfile.value = getFile(image_name.value);
  ext = extension.value = image_name.value.split('.')[1];
  console.log(ext);
}

getoutput();
console.log(ext);   

if (ext == 'jpg') {
  document.write('<img class="image_Preview">');
  document.write('<h1>It worked for jpg!</h1>');

} else if (ext == 'mp4') {
  document.write('<video class="image_Preview"></video>');
  document.write('<h1>It worked for mp4!</h1>');
}
</script>

  </label>
  <input id="image_name" name="image_name" class="file" type="file" data-count="0" style="display: none;"  onChange='getoutput()'> <br>
      Output Filename <input id='outputfile' type='text' name='outputfile'><br>
      Extension <input id='extension' type='text' name='extension'>

</form>

Give the img and video different classes, and hide and show image/video based on the file type/extension.给 img 和 video 不同的类,并根据文件类型/扩展名隐藏和显示图像/视频。

<form  method="post" enctype="multipart/form-data">

  <label class="input-group-prepend" for="image_name">
    <i class="fa fa-camera" data-toggle="tooltip" title="Attach a photo or video"></i> 
  </label>
  <input id="image_name" name="image_name" class="file" type="file" data-count="0" style="display: none;">

</form>

<video style="display: none;" class="video_Preview" controls></video>
<img style="display: none;" class="image_Preview">

Jquery查询

$('#image_name').on('change', function(event) {

  if (
    !event ||
    !event.target ||
    !event.target.files ||
    event.target.files.length === 0
  ) {
    return;
  }

  const fileUrl = window.URL.createObjectURL(event.target.files[0]);
  const imgExtensions = ['jpg', 'png'];
  const videoExtensions = ['mkv', 'mp4', 'webm'];
  const name = event.target.files[0].name;
  const lastDot = name.lastIndexOf('.');

  const ext = name.substring(lastDot + 1);

  if (imgExtensions.includes(ext)) {
    $(".video_Preview").hide(); // hide video preview
    $(".image_Preview").show().attr("src", fileUrl);
  } else if (videoExtensions.includes(ext)) {
    $(".image_Preview").hide(); // hide image preview
    $(".video_Preview").show().attr("src", fileUrl);
  }
});

 $('#image_name').on('change', function(event) { if ( !event || !event.target || !event.target.files || event.target.files.length === 0 ) { return; } const fileUrl = window.URL.createObjectURL(event.target.files[0]); const imgExtensions = ['jpg', 'png']; const videoExtensions = ['mkv', 'mp4', 'webm']; const name = event.target.files[0].name; const lastDot = name.lastIndexOf('.'); const ext = name.substring(lastDot + 1); if (imgExtensions.includes(ext)) { $(".video_Preview").hide(); // hide video preview $(".image_Preview").show().attr("src", fileUrl); } else if (videoExtensions.includes(ext)) { $(".image_Preview").hide(); // hide image preview $(".video_Preview").show().attr("src", fileUrl); } });
 <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form method="post" enctype="multipart/form-data"> <label class="input-group-prepend" for="image_name"> <i class="fa fa-camera" data-toggle="tooltip" title="Attach a photo or video"></i> </label> <input id="image_name" name="image_name" class="file" type="file" data-count="0" style="display: none;"> </form> <video style="display: none;" class="video_Preview" controls></video> <img style="display: none;" class="image_Preview">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM