<input type =“file”/>,jwplayer,javascript问题

时间:2011-07-01 00:40:56

标签: javascript jwplayer

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

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

但是当我得到用户在Javascript中选择的文件(参见下面的代码),我认为这是'安全',因为javascript在客户端执行 - 我得到的只是文件,而不是完整路径 - < em>尽管事实上完整路径和文件名出现在“浏览”按钮旁边的字段中,输入类型=文件总是给你。

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

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

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

为什么输入类型=文件控件甚至无法向用户显示完整路径,如果您无法以编程方式获取它? 毕竟,这一切都发生在客户端,并不是说这是服务器上的完整路径。

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

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

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);

通过更改我的localhost的路径,上面的代码可以正常工作 - 视频加载和成功播放。

注意:我不认为这是“文件夹权限”问题,因为我可以在同一位置使用我的计算机上的其他.FLV播放器(独立)应用播放完全相同的文件。因此,我的c:/ xampp中的文件夹权限不是让Jwplayer说'权限被拒绝或文件未找到。'

为什么Jwplayer(或Javascript ..?)不会让我在调用时使用文件的完全限定路径名 jwplayer()。load()?

毕竟,我在 Javascript 中使用'theJwPlayer',它在客户端计算机上运行,​​并且该文件也在客户端计算机上,所以这不是安全问题。< / p>

或者我在这里缺少什么?注意:如果这个问题无知,我完全道歉但是在我目前的网络编程水平上,你可能已经过去很久了,这很令人费解,特别是jwplayer()。load()没有使用完全限定的路径名​​。< / p>

1 个答案:

答案 0 :(得分:2)

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

同样,当使用表单提交文件输入时,服务器也不会获得完整路径。

我认为您使用的这个媒体播放器工具很可能不适用于本地文件(即运行浏览器的本地文件系统上的文件)。