【问题标题】:How to check that no file is uploaded to server via form?如何检查没有文件通过表单上传到服务器?
【发布时间】:2020-08-15 18:22:56
【问题描述】:

我有下一个表格:

<form action="/upload" enctype="multipart/form-data" method="POST">
      <input name="example" type="file">
      <input type="submit" value="Upload">
</form>

在服务器端,我看到上传了大小为零的文件:

-----------------------------23370864791729106148808009039
Content-Disposition: form-data; name="example"; filename=""
Content-Type: application/octet-stream


-----------------------------23370864791729106148808009039--

我如何检查用户没有为此file 字段选择任何内容?

【问题讨论】:

    标签: html content-disposition


    【解决方案1】:

    required 添加到您的输入字段以确保元素已上传。

     <form action="/upload" enctype="multipart/form-data" method="POST">
          <input required name="example" type="file">
          <input type="submit" value="Upload">
     </form

    如果不想使用 required 属性,也可以通过 javascript 检查是否有给出的内容:

     function hasContent() {
         let fileValue = document.getElementsByName('example')[0].value;
         alert(fileValue !== '' ? "has content" : 'no content');
    }
    <form enctype="multipart/form-data"method="POST">
         <input name="example"type="file">
         <input type="button"value="Upload"onclick="hasContent();">
    </form> 

    【讨论】:

    • 不需要上传文件。但是在服务器端我不知道如何检查用户选择或不选择文件。
    • @Eugen Konkov:我为 JavaScript 内容检查编辑了答案。尽管 javascript 是客户端的,但这将起作用。如果您没有说明您正在使用什么服务器端技术,并且您没有展示您的任何尝试,那么我无法为您提供更多帮助。
    • 如您所见,浏览器以 MIME 编码信息发送数据。我怎样才能从这个 MIME 信息在服务器端意识到用户没有填写这个输入字段。
    【解决方案2】:

    您可以在提交后将此代码用于您的 php 文件:

    if($_FILES['example']['tmp_name'] != null){
        //Actions you needed
    }

    如果返回 true,则表示文件已被选中。

    【讨论】:

    • 能否提供官方信息链接?
    • 是的,这个链接是您回答问题的好参考link
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多