首页 > 解决方案 > 正确地将图像上传到数据库。Laravel vue.js

问题描述

我正在尝试将图像上传到数据库,但无论我尝试什么,我都会收到此错误

在 null 上调用成员函数 getClientOriginalExtension()

或者它说它保存正确但它没有保存任何东西

以下代码位于要上传图片的表单的提交函数中的 vue.js 文件中。这就是我试图将文件发送到控制器的内容

这给了我上面的错误

if (this.form.file && this.form.imageUrl) {
    this.form.file = this.form.imageUrl;
} else {
}

var data = Converter.objectToFormData(this.form);

this.$refs.form.validate((valid) => {
    if (valid) {
        this.loading = true;
        if (!this.form.id) {
            //send code
        } else {
            //send updated
        }
    }

这也给了我上面的错误

let data = Object.assign({}, this.form);

this.$refs.form.validate((valid) => {
    if (valid) {
        this.loading = true;
        if (!this.form.id) {
            //send code
        } else {
            //send updated
        }
    }

这不会给我任何错误,但什么都没有保存

var data = new FormData();
data.append('question', this.form.question);
data.append('instruction', this.form.instruction);
data.append('survey_section_id', this.form.survey_section_id);
data.append('response_type_id', this.form.response_type_id);
data.append('questionOptions', this.form.questionOptions);
data.append('rank', this.form.rank);
data.append('num', this.form.num);
data.append('show_text', this.form.show_text);
data.append('file', this.form.file);

this.$refs.form.validate((valid) => {
    if (valid) {
        this.loading = true;
        if (!this.form.id) {
            //send code
        } else {
            //send updated
        }
    }

这是触发错误的控制器中的代码

$destino = 'img/questions';
$image = $request->has('file');
if ($image) {
    $imageFile = $request->file('file');
    $filename = Uuid::generate(4)->string . '.' . $imageFile->getClientOriginalExtension();
    $imageFile->move($destino, $filename);
    $preg->image = $destino . '/' . $filename;
}

如果我dd($imageFile)总是返回null或false,我的猜测是文件没有作为文件发送但我不确定我做错了什么或为什么会发生这种情况,$image返回true所以它确实进入了if 语句。

标签: laravelvue.js

解决方案


假设您已enctype="multipart/form-data"输入表单,laravel 6 中出现错误,迫使我在获取图像之前执行此操作:

$destino = 'img/questions';
$image = $request->has('file');
if ($image) {
    $size = $request->file('file')->getSize();
    $imageFile = $request->file('file');
    $filename = Uuid::generate(4)->string . '.' . $imageFile->getClientOriginalExtension();
    $imageFile->move($destino, $filename);
    $preg->image = $destino . '/' . $filename;
}

我不确定它是否给了我同样的错误,但如果你之前没有得到大小,文件总是空的,

希望能帮助到你!


推荐阅读