如何在多个文件输入中动态填充文件

Posted

技术标签:

【中文标题】如何在多个文件输入中动态填充文件【英文标题】:How to dynamically populate files in multiple file input 【发布时间】:2020-04-08 01:04:33 【问题描述】:

我正在使用 javascript 库 here 选择多个图像并通过表单将它们保存在数据库中,当我编辑表单时,我从数据中获取图像并像这样填充。

<script>
var upload = new FileUploadWithPreview('myUniqueUploadId', 
            showDeleteButtonOnImages: true,
            text: 
                chooseFile: 'Įkelkite nuotrauką',
                browse: 'naršyti',
                selectedCount: 'Pasirinkti failai',
            ,
            presetFiles: [
              <?php
              foreach($Workimages as $Workimg)
                echo $website_url.'master_image/'.$Workimg.','
              
            ],
        )
   </script>

图像以Blob 的形式出现并且正在被填充,但是当我更新数据库中的数据时,旧图像被忽略,但新选择的图像被上传。我还检查了$_FILES['images']。它没有我的旧图像文件。

我也尝试过使用upload.cachedFilesArray.pushupload.addFiles() 方法,但我没有成功。有没有其他方法可以填充multiple file input

【问题讨论】:

【参考方案1】:

我是这个库的作者。

您似乎发现了Blob 类型被您的PHP 服务器接受的问题。这可能是我以前从未遇到过的事情,因为我觉得我过去曾将 Blob 类型上传到我的 PHP 服务器 - 但也许我只是在想象事情,它们一直是 @987654326 @types,这就是为什么我从来没有遇到过任何问题。

无论如何,为了让您的情况同时正常工作,我制作了一个简单的 codepen 循环遍历 upload.cachedFileArray 数组并将每个 Blob(或 File)转换为 File 类型,并附加它到一个准备好上传的新临时数组。有关更多信息,请参阅 codepen 中的 cmets。

此时,您只需上传新的临时数组即可。将来我会着眼于确保所有presetFiles 都是File 类型而不是Blob

【讨论】:

以上是关于如何在多个文件输入中动态填充文件的主要内容,如果未能解决你的问题,请参考以下文章

来自多个输入文件的填充表

如何使用文件填充数组并将其与用户输入 c++ 进行比较

如何使用链接从数据库中预填充表单字段?

如何使用 Json 对象填充动态添加的输入字段

如何使用 $.each 将多个文件输入附加到 FormData 对象?

如何使用Power Query动态汇总文件夹下多个Excel文件