gpt4 book ai didi

javascript - 如何在jsp中获取<input type ="file"的文件名

转载 作者:搜寻专家 更新时间:2023-10-31 22:16:58 27 4
gpt4 key购买 nike

我想从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>

我希望在我的 Servlet 类中读取所选文件的路径如何获取文件路径?我可以从 var a 读取它吗?或者有什么方法可以直接从我的 servlet 的 input type="file" 访问文件路径?

最佳答案

首先要澄清一个常见的误解:文件路径在服务器端是没有值(value)的。假设我是客户端,我给你文件路径 c:/passwords.txt ,作为服务器,您将如何获取其内容?使用 java.io.File ?不?这只有在客户端和服务器都在物理上相同的机器 上运行时才有效。 唯一可能发生的是本地开发环境。

其次,澄清一个限制:Javascript 不能对 input type="file" 做任何事情。元素由于安全限制。如果可能的话,那么可以开发一个网站,将上传的文件设置为 c:/passwords.txt并在 onload 期间提交表格.从访问该网站的每个人那里收集所有密码文件很容易!没有?

毕竟,您对文件内容 很感兴趣。如 HTML forms spec 中所述您需要将请求方法设置为 POST并将请求编码为 multipart/form-data在 parent <form>元素。

<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>

这样文件将在请求正文中发送。由于标准 Servlet API 版本高达 2.5 没有内置工具来解析 mulipart/form-data requests,需要自己解析请求。最好的方法是使用 Apache Commons FileUpload为了这。点击链接并阅读用户指南常见问题解答以获取代码示例和提示与技巧。当您已经使用 Servlet 3.0 时,您可以只使用提供的 Servlet API HttpServletRequest#getParts() 为了这。 You can find here an article with code examples about that .

关于javascript - 如何在jsp中获取&lt;input type ="file"的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com