【问题标题】:Why input type="file" not working on browser为什么输入类型=“文件”在浏览器上不起作用
【发布时间】:2014-05-16 06:06:36
【问题描述】:

我只是在 MyEclipse 上编写了一个使用 Java 邮件 API 发送邮件的代码。对于我使用的附件

 <input type="file" name="attachment"/> 

在 MyEclipse 上,我的代码运行并成功发送邮件,但如果我在浏览器上尝试(如 mozilachrome),则未选择整个附件路径(如:D:/newfolder/img.png),只有 filename 是已选中(例如:img.png)。

导致错误/异常:

 java.io.FileNotFoundException: img.png (The system cannot find the file specified)

有没有其他方法可以附加或上传文件..?

【问题讨论】:

  • 路径仅供参考,您应该使用上传的文件。
  • 显示更多代码,包括 form 标记,并说明您在哪里看到文件名被选中以及为什么这很重要。听起来你的form标签缺少enctype属性,这意味着选择的文件不会包含在表单数据中(只有文件名,一般没用)。
  • 你能发布你完整的 HTML 表单代码吗?

标签: java html myeclipse


【解决方案1】:

当你上传文件时,文件会在POST请求中发送,你可以读取所有的内容和文件名,但是原始路径将不提供给服务器。

按照 HTML5 的规范,文件路径在某些浏览器中默认隐藏,特别是 Internet Explorer 8+ 和某些版本的 Mozilla Firefox。

这被认为是浏览器的一项安全功能,但将相关站点添加到浏览器配置中的“受信任站点”列表将允许公开完整路径。

我发现这个:barracuda

【讨论】:

    【解决方案2】:

    我想你已经忘记了这个enctype="multipart/form-data"

    <form action="upload_file.jsp" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="Submit">
    </form>
    

    【讨论】:

      【解决方案3】:

      显然,您正试图在服务器上打开从客户端上传的文件。

      您必须从请求中读取传入的字节,并将其保存在磁盘或数据库中的某个位置。

      您看到的文件名只是为了帮助您定义一个名称以将文件保存在服务器上。直接读取路径是无法访问客户端文件的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-16
        • 1970-01-01
        • 2017-07-16
        • 1970-01-01
        • 1970-01-01
        • 2021-08-16
        • 1970-01-01
        相关资源
        最近更新 更多