dee*_*121 3 html javascript jsp servlets file-upload
我想从html读取文件路径input type="file"
(用户在文件对话框中选择的条目)
<script>
function OpenFileDialog(form) {
var a = document.getElementById("inputfile").click();
SampleForm.filePath.value = //set the path here
document.SampleForm.submit();
}
</script>
<form name="SampleForm" action="TestServlet" method="get">
<input type="file" style="display:none;" id="inputfile"/>
<a href="javascript:OpenFileDialog(this.form);">Open here</a>
<input type="hidden" name="filePath" value=""/>
</form>
Run Code Online (Sandbox Code Playgroud)
我希望在我的Servlet类中读取所选文件的路径如何获取文件路径?我能从中读出来var a吗?或者有没有办法input type="file"从我的servlet 直接访问文件路径?
首先,要清除一个常见的误解:文件路径在服务器端是没有价值的.想象一下,我是客户端,我给你文件路径c:/passwords.txt,你将如何获得它的内容服务器?用java.io.File?没有?只有当客户端和服务器都在物理上相同的机器上运行时,这才有效.该只可能发生难度当地的发展环境.
第二,澄清限制:input type="file"由于安全限制,Javascript无法对元素执行任何操作.如果可能,那么可以开发一个网站,将上传的文件设置为c:/passwords.txt并在此期间提交表单onload.从访问该网站的每个人那里收集所有密码文件都很容易!没有?
毕竟,你对文件内容很感兴趣.如HTML表单规范中所述,您需要在父元素中设置请求方法POST和请求编码.multipart/form-data<form>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
这样,文件将在请求正文中发送.由于最高2.5的标准Servlet API版本没有内置工具来解析mulipart/form-data请求,因此您需要自己解析请求.最好的方法是使用Apache Commons FileUpload.请点击链接,阅读用户指南和常见问题解答,了解代码示例和提示与技巧.如果您已经在Servlet 3.0上,那么您可以使用HttpServletRequest#getParts()为此提供的Servlet API .你可以在这里找到一篇包含代码示例的文章.
| 归档时间: |
|
| 查看次数: |
30259 次 |
| 最近记录: |