【问题标题】:Filename maxlength文件名最大长度
【发布时间】:2013-03-28 12:16:55
【问题描述】:

我有一个这样的文件上传表单

<form action="upload_file.php" 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>

有时用户会上传包含 200 个字符名称的文件。 存在限制文件名最大长度的方法吗?

【问题讨论】:

  • 你不应该关心客户端的文件名大小,只需在服务器端重命名上传的文件。
  • 绝对不是来自 HTML/JavaScript(据我所知)。
  • 公平地说,如果用户的文件位于 ie: d:\backup\jan\2013\pictures\holiday\somethingelse\foldername\ cant\think\off\any\thing\else\image.jpg,如果您正在寻找一种仅显示所选上传文件名的方法,大多数浏览器都会为您解决这个问题。

标签: php javascript


【解决方案1】:

浏览器会将基本文件名暴露给 JavaScript,所以这在技术上是可行的,尽管正如上面提到的@VisioN,我想不出你为什么会关心;只需将服务器上的文件重命名为其他名称。如果你绝对需要阻止它,那么给你的元素一个 ID uploader 然后:

<script>
document.getElementById("uploader").onsubmit = function(){
    return document.getElementById("file").value.length < 200; 
};
</script>

当然,这只有在启用 JavaScript 时才有效。

【讨论】:

    【解决方案2】:

    您还应该在 PHP 端验证它,因为有人可以直接将其提交到 upload_file.php 并绕过任何 HTML/JavaScript 限制。

    【讨论】:

      【解决方案3】:

      使用 Graham 的代码并使用 PHP 检查文件名长度

      if(strlen($_POST['name']) > 200) { echo "filename to long"; exit; }
      

      您必须在 HTML 表单中添加 MAX_FILE_SIZE,否则 PHP 无法获取上传的文件

      <input type="hidden" name="MAX_FILE_SIZE" value="MaximumFilesizeInBytes">
      

      【讨论】:

        猜你喜欢
        • 2011-09-28
        • 1970-01-01
        • 2012-10-23
        • 2014-10-15
        • 1970-01-01
        • 2013-01-27
        • 2019-01-28
        • 2011-10-15
        相关资源
        最近更新 更多