Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML表单上的输入类型文件不适用于Safari版本14.0.1(14610.2.11.51.10)_Html_Forms_Macos_Safari - Fatal编程技术网

HTML表单上的输入类型文件不适用于Safari版本14.0.1(14610.2.11.51.10)

HTML表单上的输入类型文件不适用于Safari版本14.0.1(14610.2.11.51.10),html,forms,macos,safari,Html,Forms,Macos,Safari,已解决/注意:我已接受将“accept=”选项添加到HTML代码中作为问题解决方案的答案。应该注意的是,尽管这确实可以作为一种解决办法,但根本原因可能是Safari bug——不应该要求将其添加到HTML中以使此功能正常工作 原始问题描述和信息: 我的mac今天早上收到一个更新,现在运行macOS Mojave 10.14.6(18G6042)。看起来Safari一定收到了更新,虽然苹果没有给出更新的细节,只是通常的“你需要重新启动”,没有额外的信息,然后等待了20分钟。Safari现在的版本是

已解决/注意:我已接受将“accept=”选项添加到HTML代码中作为问题解决方案的答案。应该注意的是,尽管这确实可以作为一种解决办法,但根本原因可能是Safari bug——不应该要求将其添加到HTML中以使此功能正常工作

原始问题描述和信息:

我的mac今天早上收到一个更新,现在运行macOS Mojave 10.14.6(18G6042)。看起来Safari一定收到了更新,虽然苹果没有给出更新的细节,只是通常的“你需要重新启动”,没有额外的信息,然后等待了20分钟。Safari现在的版本是14.0.1(14610.2.11.51.10)

自从更新之后,我发现我再也不能在Safari中通过HTML表单提交文件了。显示“选择文件”按钮,但单击该按钮不会产生任何结果。我将在下面发布我的代码,但我还使用w3schools示例验证了这一点(它现在在Safari中也不起作用),并且我的代码在同一台笔记本电脑上的Chrome和Firefox中运行良好

有人知道这方面的信息吗?现在在Safari中工作需要额外的指令吗?是否由于某些安全问题而被阻止?这只是一个bug吗

下面是我的测试代码,以防相关,尽管它与w3schools示例大致相同,添加了一些PHP来显示文件信息

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>Upload File Test</title>
</head>

<body>

<br/>
<?php
  if (isset($_POST["UploadFile"]))
  {
      if ($_FILES["myfile"]["error"] > 0)
      {
        echo "No file was selected.<br/>\n";
      }
      else
      {
          echo "Upload: " . $_FILES["myfile"]["name"] . "<br/>\n";
          echo "Type: " . $_FILES["myfile"]["type"] . "<br/>\n";
          echo "Size: " . ($_FILES["myfile"]["size"] / 1024) . " kB<br/>\n";
          echo "Stored in: " . $_FILES["myfile"]["tmp_name"] . "<br/>\n";
      }
  }
?>

<FORM NAME="file_upload" METHOD="POST" ACTION="file-test.php" enctype="multipart/form-data" accept-charset="UTF-8">

<label for="file">Upload File:</label>
<input type="file" name="myfile" id="myfile" />

<INPUT type="Submit" name="UploadFile" value="Upload" />
         
</FORM>

<br/>

</body>
</html>

上传文件测试

上载文件:
更多信息:所以问题仍然存在,有时对话框现在打开,但有时不打开。以前,对话框总是在您加载或保存文件的最后一个目录中打开,我只是将一堆页面保存为PDF(通过打印)以进行一些工作,现在当我再次转到“选择文件”时,它会显示下面的对话框(不幸的是,屏幕截图没有捕获完整路径,但您明白了)。所以这看起来像是Safari中的一个问题,但我仍然不确定到底是什么或如何纠正它。另外,当对话框在我的本地测试页面上打开时,它不会为基于web的页面(我的网站、w3schools等)打开

更多信息:Safari刚刚再次默认为“不可访问”目录,它有时会一直默认为“不可访问”目录,这里有一个屏幕截图,以防额外的信息进一步帮助任何人(我猜可能只是苹果公司的人修复了这个错误)。。。通常情况下,您无法从Safari浏览到此文件夹,我猜这是此错误的一部分-Safari正在尝试默认为此目录进行文件上载,但由于任何原因,它无法跳转到以前使用过的最后一个目录


我确认这是Safari的问题,至少在莫哈韦是这样。我在莫哈韦10.14.6上有Safari 14.0.1(14610.2.11.51.10)(安全更新2020-06后的18G6032和18G6042:无变化)。 似乎没有文件上传会起作用:它在我自己的网站上失败,非常简单的html几乎只限于
,在两个标准CMS(旧的WordPress和当前的MODX)上也失败。根本没有文件选择窗口。我试着允许任何东西(例如弹出窗口):没有改变

OS X的日志表明,当单击按钮时,Safari被拒绝访问文件:

沙盒:Safari(4721)拒绝(1)iokit打开AppleAPFSUserClient 违反:拒绝(1)iokit open APPLEAPFSUERCLIENT


对于那些非技术用户必须提供文件的网站维护者来说,这是一件恼人的事情:他们可能会得出结论,网站已经坏了,而它还没有坏。除了添加一条建议使用其他浏览器的警告之外,我没有其他解决方案。

我昨天遇到了同样的问题

在研究它之后,我发现它在其他地方工作,并通过在输入标记中添加带有文件类型列表的accept属性,在我正在处理的站点上修复了它。 (例如,


Mojave 10.14.6上的Safari版本14.0.1(14610.2.11.51.10)现在可以正常工作

您可以通过系统设置>安全和隐私>完整磁盘访问来解决此问题。(可能需要向下滚动左窗格才能找到它)

单击“+”并添加/Applications/Safari,启用它,然后重新启动Safari


我有完整的磁盘访问和接受类型。但它仍然无法打开文件选择对话框


文件1标签

文件2标签
提交

这偶尔对file1起作用,但从未对file2起作用。但是,重新加载页面将不允许我从两个文件输入中进行选择。

允许Safari完全访问磁盘不会解决此问题

我有一个

点击文件输入1、3、4即可。 用accept=“image/*;capture=camera”单击文件输入2后,将停止页面上的所有文件上载。但不是同一域中的任何其他页面


需要退出safari,以便能够使用文件输入1,3,4再次选择任何文件。

我无法将此纳入Michael K的答案下的评论中,但想发布,以防对其他人有用。我们允许任何内容上传到我们的网站,所以必须添加一个“接受”属性来解决这个问题,这迫使我列出哪些内容是可以接受的。以下是我的文件扩展名列表,对于非编码人员来说,这些文件扩展名似乎是合理的(从视频到文档、电子表格、txt文件等)。像Lotus 1-2-3床单之类的东西太多了,但这里是按字母顺序排列的:

<input type="file" accept="audio/*,video/*,image/*,.123,.csv,.doc,.docm,.docx,.dot,.dotx,.epub,.gdoc,.gsheet,.gslides,.html,.info,.json,.key,.keynote,.log,.mcw,.md,.me,.numbers,.odm,.odp,.ods,.odt,.otp,.ots,.ott,.pages,.pdax,.pdf,.pez,.pot,.pps,.ppt,.pptx,.rtf,.shf,.sti,.sxi,.tab,.thmx,.tsv,.txt,.wk1,.wk3,.wk4,.wks,.wpd,.wps,.wpt,.wrd,.wrf,.wri,.xhtml,.xlk,.xlr,.xls,.xlsb,.xlsm,.xlsx,.xlt,.xltm,.xlw,.xml,.xps,.zip">


这是我查看的完整列表:

奇怪的是,该功能重新开始工作,没有任何更改或重新启动。我想知道问题是否是权限/安全性-Safari试图在存在权限问题的位置打开“文件选择”对话框,但因此失败。谁知道呢?当它打开时,我似乎在Safari temp files文件夹的位置(我应该记下确切的文件夹),现在我可以浏览到其他位置,该功能工作正常。显然HTML没有任何问题,但有一些内部Safari和/或安全问题。仅供参考,我从我的用户那里得到了这方面的报告,
<input type="file" accept="audio/*,video/*,image/*,.123,.csv,.doc,.docm,.docx,.dot,.dotx,.epub,.gdoc,.gsheet,.gslides,.html,.info,.json,.key,.keynote,.log,.mcw,.md,.me,.numbers,.odm,.odp,.ods,.odt,.otp,.ots,.ott,.pages,.pdax,.pdf,.pez,.pot,.pps,.ppt,.pptx,.rtf,.shf,.sti,.sxi,.tab,.thmx,.tsv,.txt,.wk1,.wk3,.wk4,.wks,.wpd,.wps,.wpt,.wrd,.wrf,.wri,.xhtml,.xlk,.xlr,.xls,.xlsb,.xlsm,.xlsx,.xlt,.xltm,.xlw,.xml,.xps,.zip">