laravel - 在 foreach 循环中访问 FileBag 文件数组

标签 laravel vue.js axios

我一直在尝试通过请求访问此文件包,但没有成功:

这就是我要发送的内容:

enter image description here

这是我在执行 dd($request) 时收到的信息:

enter image description here

但是当尝试输出或访问它时:

例如:

dd($request->file('files')[0]);

它输出

message: "Cannot use object of type Symfony\Component\HttpFoundation\FileBag as array",

我也尝试过

dd($request->file('files'));

但它输出NULL

我也尝试过:

$t = $request->files->all();
dd($t);

这个输出:[]

我发送它的方式是使用 axios

let formData = new FormData();
                formData.append('draft', true);
                formData.append('global_id', this.paragraph.ManualBook_SectionParagraphGlobalID);
                formData.append('newparagraph', this.newParagraph.tobeCreated);
                formData.append('paragraph_id', this.paragraph.ManualBook_SectionParagraphGlobalID);
                formData.append('display_order', this.paragraph.DisplayOrder);
                formData.append('section_id', this.current_section);
                formData.append('RCBulletinNumber', this.paragraph.RCBulletinNumber);
                formData.append('paragraph_title', this.paragraph.ParagraphTitle);
                formData.append('paragraph_text', this.paragraph.ParagraphText);
                formData.append('go_live_date', this.getGoodDate(this.edited_paragraph.go_live_date));
                formData.append('revision', this.edited_paragraph.revision);
                formData.append('revision_number', this.paragraph.RevisionVersion);
                formData.append('files', this.files);

                axios.post(window.baseURL + 'api/admin/paragraph_editor', {
                    formData
                }, {
                        headers: {
                        'Content-Type': 'multipart/form-data'
                        }
                    }....

知道为什么会发生这种情况吗?

最佳答案

如果您想通过 AJAX 请求使用 FormData API 上传多个文件,则需要将每个文件附加到 FormData 对象。假设您的输入文件字段如下:

<input type="file" id="files" name="files[]" multiple>

假设 this.files 将包含多个文件。因此,我们将循环遍历文件,将它们附加到 FormData 对象,如下所示:

let formData = new FormData();

Array.from(this.files).forEach(function(file){
    formData.append('files[]', file);
});

现在您可以在 Controller 的方法中获取这些文件,如下所示:

$request->file('files');

希望这对您有帮助!

关于laravel - 在 foreach 循环中访问 FileBag 文件数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62354200/

相关文章:

php - Laravel 5 > 使用 monolog 自省(introspection)处理器

javascript - Vue.js2 渲染空数组

ios - React Native 和美国导出法规

javascript - axios从v0.27.2升级到v1.1.2后出现错误

javascript - React 不会将多个获取的 API 渲染到 DOM

laravel - npm 安装在 laradock 上不工作

php - 尝试运行种子类时发出 "Grammar::parameterize() must be of the type array"

php - Reactjs 和 Laravel 之间的 session 问题,(错误 401 - 未验证)

javascript - Vue.js 在添加新行时尝试增加数组值

amazon-web-services - AWS Cognito 托管 UI 和 Amplify Auth 与授权代码 OAuth 流