<输入类型=文件>,jwplayer,javascript问题

<input type=file>, jwplayer, javascript question

本文关键字:jwplayer javascript 问题 gt lt 输入 类型 文件      更新时间:2023-09-26

我显示一个文件打开框,这样用户就可以在他们的计算机上选择一个文件:

<input type="file" id="upload_input"/>

但当我得到用户在Javascript中选择的文件时(见下面的代码),我认为这是"安全的",因为Javascript在客户端执行——我得到的只是文件,而不是完整路径——尽管完整路径和文件名显示在input-type=file总是给你的"浏览"按钮旁边的字段中。

换句话说,用户选择位于其机器上的文件,例如位于c:''aFolder/thefile.rtf。选择该文件后,完整路径将显示在"浏览"按钮旁边的字段中:c:/aFolder/tefile.rtf

然而,当我以编程方式检索该字段的值时,整个路径被剥离,我只有文件名:

filename = document.getElementById('upload_input').value;
alert("The selected file name is " + filename);

如果您无法通过编程方式获取完整路径,为什么input-type=file控件还要麻烦向用户显示完整路径?毕竟,这一切都发生在客户端,这并不是服务器上的完整路径。

另一个问题是:为了让我的JWplayer代码正常工作,我使用上面的文件名,并构造一个到该文件的完全限定路径,only。我在这里为开发创建的完整路径是临时的

换句话说,当我得到上面的文件名时,我会这样做:

vidFname = ("c:/xampp/htdocs/theWebsite/aFolder/" + filename);
alert("The full path is: " + vidFname);

然后我尝试在Jwplayer:中播放视频

playlist = { file: vidFname };
theJwPlayer().load(playlist);
theJwPlayer().play(true);

但Jwplayer给了我"权限被拒绝或找不到文件。"

以下是我必须更改的内容以使其发挥作用:

vidFname = ("http://localhost/theWebsite/aFolder/" + filename);
alert("The full path is: " + vidFname);
playlist = { file: vidFname };
theJwPlayer().load(playlist);
theJwPlayer().play(true);

通过更改到本地主机的路径,上面的代码就可以工作了——视频加载并成功播放。

注意:我不认为这是"文件夹权限"问题,因为我可以用不同的方法在同一位置播放完全相同的文件。我电脑上的FLV播放器(独立)应用程序。因此,Jwplayer说"权限被拒绝或找不到文件"并不是因为我的c:/examplep中的文件夹权限

为什么Jwplayer(或者它是Javascript..?)不允许我在调用时使用文件的完全限定路径名jwplayer().load()?

毕竟,我在Javascript中使用'JwPlayer',它在客户端计算机上运行,文件也在客户端计算机中,所以这不是安全问题。

还是我在这里少了什么?注意:如果这个问题是无知的,我深表歉意,但以我目前的网络编程水平,你可能很久以前就已经通过了,这很令人困惑,尤其是jwplayer().load()不能使用完全限定的路径名。

浏览器不会显示JavaScript代码的实际文件路径。这是一个安全问题。如果不使用(新的,仅在新浏览器中可用)HTML5文件处理API,您将无法访问本地文件,甚至这些API也不会为您提供完整的文件路径名。

类似地,当文件输入与表单一起提交时,服务器也不会获得完整路径。

我认为你使用的这个媒体播放器工具不太可能是为处理本地文件(即运行浏览器的本地文件系统上的文件)而设计的。