【问题标题】:Correctly upload an image to database. Laravel vue.js正确地将图像上传到数据库。 Laravel vue.js
【发布时间】:2020-02-18 16:03:25
【问题描述】:

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

在 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,我的猜测是该文件没有作为文件发送,但我不确定我做错了什么或为什么会发生这种情况,@987654326 @ 返回 true,所以它确实进入了 if 语句。

【问题讨论】:

    标签: laravel vue.js


    【解决方案1】:

    假设您在表单上输入了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;
    }
    

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

    希望对你有帮助!

    【讨论】:

    • 我收到一个新错误>在 null 上调用成员函数 getSize()
    • 如果你做一个 dd($request);在函数的开头,你得到了什么?
    • 它很大,但我只会添加数据 #data: array:10 [▼ "question" => "asdf" "survey_section_id" => "1" "response_type_id" => " 1" "可选" => "false" "rank" => null "num" => null "file" => "blob:dev.unadeca.com/d0662bde-ddea-4e92-9dab-06e90ab62152" "imageUrl" => "blob:dev.unadeca.com/d0662bde-ddea-4e92-9dab-06e90ab62152" "show_text" = > "false" "questionOptions" => 数组:2 [▶] ]
    • 好的,现在把$image的值改成这样:$request->hasFile('file') 并检查它是否满足条件
    • 我没有收到错误,但在数据库中图像设置为空
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2021-08-28
    • 2016-08-28
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多