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

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


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

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

但是,当我以编程方式检索该字段的值时,将删除整个路径,而我只有的是文件名:

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


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

另一个问题:我只是使用上面的文件名并构造了该文件的标准路径,只是为了使我的JWplayer代码正常工作。我在此处为开发创建的完整路径是暂时的。

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

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播放器(独立)应用在相同位置播放完全相同的文件。因此,不是让我的c:/ xampp中的文件夹权限使Jwplayer说“权限被拒绝或找不到文件”。

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

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

还是我在这里想念的东西?注意:如果这个问题是无知的,我会深表歉意,但是在我当前的Web编程水平上,这可能是你很久以前才通过的,这令人困惑,特别是jwplayer()。load()无法使用完全限定的路径名​​。

最佳答案

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

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

我认为您正在使用的此媒体播放器工具不太可能设计用于处理本地文件(即运行浏览器的本地文件系统上的文件)。

关于javascript - <input type = file>,jwplayer,javascript问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6542559/

10-12 07:00