如何解决$_FILES['file'] 在使用 filepond 时变为 null
这是普通的输入文件,格式为 POST 的 HTML 格式
<input type="file" name="file" accept="image/png,image/jpeg">
然后我会用这个用 PHP 编写的函数来获取那个文件输入
function Upload() {
$namefile = $_FILES['file']['name'];
$error = $_FILES['file']['error'];
$tmpName = $_FILES['file']['tmp_name'];
move_uploaded_file($tmpName,'upload/'.$namefile);
return $namafile;
}
是的,那是成功。文件移动到文件夹“上传”。
但我想尝试使用 Filepond 设置表单输入的样式。
<input class="filepond" type="file" name="file" accept="image/png,image/jpeg">
有了这个js
const inputElement = document.querySelector(".filepond");
FilePond.registerPlugin(
FilePondPluginFileValidateType,FilePondPluginFileValidateSize
)
FilePond.create(inputElement,{
labelIdle: 'Upload Photo<span class="filepond--label-action">Browse</span>',maxFiles: '1',maxFileSize: '5MB',labelMaxFileSizeExceeded: 'Too big bro.',labelMaxFileSize: 'max {filesize}',labelFileTypeNotAllowed: 'Meh dont up that type',fileValidateTypeLabelExpectedTypes: 'just {allTypes}'
})
但是当我尝试使用与以前相同的方法获取文件时,$_FILES['file']
将变为 null。
解决方法
filepond 可能会创建一个具有不同名称的代理元素,而不是为您的输入设置样式。
试试 var_dump($_FILES)
,看看它是否被命名为别的东西。
作为 browsers cannot update the file input field value,文件存储在单独的字段中。
这意味着您要么必须将 encode the file 作为 base64 字符串,然后使用表单提交上传(然后在服务器上解码)。
或者您必须通过将 FilePond server
property 设置为服务器上处理上传的页面来异步上传文件。
第三种选择是将 storeAsFile
属性设置为 true
,FilePond 现在将更新文件输入字段,但这仅适用于浏览器 supports the DataTransfer constructor
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。