通过节点上传的Google云存储,图像已损坏

时间:2018-08-18 21:01:35

标签: google-app-engine google-cloud-storage

使用节点库上载的图像似乎报告了正确的大小,但似乎已损坏。

报告了与使用Java/PHP

相似的问题
takeAux :: Int -> ListS a -> ListS a

使用上述代码,图像文件已成功上传,代码将转换base64上传的内容并写入指定的文件。但是,浏览到公共URL时,图像看起来已损坏/损坏。手动上传的图片符合预期。

1 个答案:

答案 0 :(得分:1)

关于节点存储损坏图像的疲倦的解决方案发布here,并且似乎需要删除base64编码图像中的元信息。更新了下面的工作代码

    let fileName: string = `${namespace}/${data["name"]}`;
    let file: Storage.File = this.bucket.file(fileName);

    //add acl, who has access to this file
    console.debug("creating/modifying file", fileName);

    let base64Source = (data["source"] as string).replace(/^data:image\/(png|gif|jpeg);base64,/,'');
    let fileBuffer = new Buffer(base64Source,'base64');

    return from(file.save(fileBuffer, { contentType: data["contentType"], public: data["isPublic"] }))
        .pipe(map(() => {
            return { source: `${this.publicURLPrefix}/${fileName}` }
        }));