Html 我可以使用本地文件作为实时页面中的源文件吗?

Html 我可以使用本地文件作为实时页面中的源文件吗?,html,Html,我喜欢在设计一个新接口时使用JSFIDLE,因为我发现它对其中的各种工具都很方便。我正在一个网站的前端工作,在那里我想使用视频,与图像不同的是,我不能把它放在imgur上,然后链接到imgur上,在我摆弄界面设计的同时免费提供即时托管 因此,我想知道我是否可以以某种方式使用PC上的本地文件作为托管在实时站点上的HTML视频元素的源。显然,这对于在我的桌面上工作的web项目来说是微不足道的,但我不确定它是否可以在实时测试中完成 例如,这将在我从桌面打开的页面上工作,在我的PC上生活: <vi

我喜欢在设计一个新接口时使用JSFIDLE,因为我发现它对其中的各种工具都很方便。我正在一个网站的前端工作,在那里我想使用视频,与图像不同的是,我不能把它放在imgur上,然后链接到imgur上,在我摆弄界面设计的同时免费提供即时托管

因此,我想知道我是否可以以某种方式使用PC上的本地文件作为托管在实时站点上的HTML视频元素的源。显然,这对于在我的桌面上工作的web项目来说是微不足道的,但我不确定它是否可以在实时测试中完成

例如,这将在我从桌面打开的页面上工作,在我的PC上生活:

<video id="Video-Player">
    <source src="../movie.mp4" type="video/mp4"/>
</video>


但我不知道我是否能用一个生活在网络上的页面做同样的事情

下面介绍如何允许用户从本地计算机选择图像。这会让你从正确的方向开始

在HTML中添加文件输入按钮

<input type="file" id="file-btn"/>
然后是读取文件的代码

function readFiles(files){
  files = [].slice.call(files); //turning files into a normal array

  for (var file of files){
    var reader = new FileReader();

    reader.onload = createOnLoadHandler(file);
    //there are also reader.onerror reader.onloadstart, reader.onprogress, and reader.onloadend handlers

    reader.readAsDataURL(file);
  }
}
现在,我只对图像进行了处理,但这是我读取图像数据的方式

function createOnLoadHandler(file){
  console.log('reading ' + file.name + ' of type ' + file.type)

  function onLoad(e){
    var data = e.target.result
    display(data);
  }

  return onLoad
}

function display(data){

    var img = document.createElement('img');
    img.src = data;

    var context = canvas.getContext('2d')
    context.clearRect(0, 0, WIDTH, HEIGHT);
    context.drawImage(img, 0, 0, WIDTH, HEIGHT);
  }
以上代码的一部分


另外,如果您试图从另一个域读取图像,您将遇到问题。我认为视频也存在同样的问题。

以下是如何允许用户从本地机器选择图像。这会让你从正确的方向开始

在HTML中添加文件输入按钮

<input type="file" id="file-btn"/>
然后是读取文件的代码

function readFiles(files){
  files = [].slice.call(files); //turning files into a normal array

  for (var file of files){
    var reader = new FileReader();

    reader.onload = createOnLoadHandler(file);
    //there are also reader.onerror reader.onloadstart, reader.onprogress, and reader.onloadend handlers

    reader.readAsDataURL(file);
  }
}
现在,我只对图像进行了处理,但这是我读取图像数据的方式

function createOnLoadHandler(file){
  console.log('reading ' + file.name + ' of type ' + file.type)

  function onLoad(e){
    var data = e.target.result
    display(data);
  }

  return onLoad
}

function display(data){

    var img = document.createElement('img');
    img.src = data;

    var context = canvas.getContext('2d')
    context.clearRect(0, 0, WIDTH, HEIGHT);
    context.drawImage(img, 0, 0, WIDTH, HEIGHT);
  }
以上代码的一部分


另外,如果您试图从另一个域读取图像,您将遇到问题。我认为视频也存在同样的问题。

上传到youtube或其他网站?@SergioTulentsev我实际上是想在设计中使用视频作为背景,虽然我知道这是可能的,这不适用于我的情况,因为我的最终目标是根据用户输入将各种视频从我的网站流到播放器。无论如何,使用网页中的本地文件可能是不可能的(因为浏览器的安全性)。如果任何网站都可以从你的FS加载任意文件,这将是一个大问题,不是吗?如果用户通过与选择文件上载相同的弹出界面找到视频,你可以从本地计算机加载视频。(无法找到该弹出窗口的实际名称)。这就是你想做的吗?@Mr.Me这是个好主意,虽然这不是我最初想象的只是上传到youtube或其他什么?@SergioTulentsev我实际上是想在设计中使用视频作为背景,虽然我知道这是可能的,这不适用于我的情况,因为我的最终目标是根据用户输入将各种视频从我的网站流到播放器。无论如何,使用网页中的本地文件可能是不可能的(因为浏览器的安全性)。如果任何网站都可以从你的FS加载任意文件,这将是一个大问题,不是吗?如果用户通过与选择文件上载相同的弹出界面找到视频,你可以从本地计算机加载视频。(无法找到该弹出窗口的实际名称)。这就是你想做的吗?@Mr.Me这是个好主意,尽管这不是我最初想象的