使用 laravel 和 Angular 4 问题通过 API 在数据库中保存文件

Posted

技术标签:

【中文标题】使用 laravel 和 Angular 4 问题通过 API 在数据库中保存文件【英文标题】:Saving file via API in database using laravel and angular 4 issue 【发布时间】:2018-08-18 19:12:57 【问题描述】:

我有 2 个问题... 1.当我在saveAttachment()方法中发送文件请求时为空([])。 2. 我的程序可以将文件保存为数据库中的二进制文件吗?

Laravel 迁移:

class CreateAttachmentsTable extends Migration

    public function up()
    
        Schema::create('attachments', function (Blueprint $table) 
            $table->uuid('id')->primary();
            $table->binary('content');
        );
    

Laravel 控制器:

public function saveAttachment(Request $request)

    if ($request->file) 
        $attachment = new Attachment();
        $attachment->content = $request->file;
        $attachment->save();
    

角度组件:

onFileChange(event) 
    if (event.target.files.length > 0) 
        this.service.saveAttachment(event.target.files[0]).subscribe();
    

角度服务:

saveAttachment(file: File) 
    return this.http.post(USER_API_URL + '/saveAttachment,  file: file );

谢谢。

【问题讨论】:

【参考方案1】:

我找到了一个解决方案,但它可能不是最好的......

Laravel 迁移:

class CreateAttachmentsTable extends Migration

    public function up()
    
        Schema::create('attachments', function (Blueprint $table) 
            $table->binary('content');
        );
    

Laravel 控制器:

public function upload(Request $request)

    $file = new File();
    $file->content = $request->fileContent;
    $file->save();

角度组件:

onFileChange(event) 
    if (event.target.files.length > 0) 
        const reader = new FileReader();

        reader.onload = (e) => 
            this.fileService.upload(reader.result).subscribe();
        ;

        reader.readAsDataURL(event.target.files[0]);
    

角度服务:

saveAttachment(fileContent: File) 
    return this.http.post(API_URL + '/upload,  fileContent: file );

【讨论】:

以上是关于使用 laravel 和 Angular 4 问题通过 API 在数据库中保存文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 laravel 和 Angular 4 问题通过 API 在数据库中保存文件

如何将 Laravel 5.4 与 Angular 4 集成

Laravel 4 和 Angular JS 和 Twitter Bootstrap 3 分页

Laravel 4 + Angular 身份验证路由

使用“multipart/form-data”时,Laravel 4 未收到 Angular $http PUT 数据

我无法在 Angular 4 上向 laravel api 发送带有标头的 http 请求