2016-06-14 55 views
0

我使用Angular上传图像到s3存储桶,使用从我的Laravel服务器接收的预先设置的URL。从角度上传已签名的图像到s3 - 图像不出现

该文件似乎正确地上传正确的内容类型。如果我的角度上载后的S3文件点击PUT的到S3,我得到:

Object: dog-aromatherapy.jpg 

    Bucket: dderesources 
    Name: dog-aromatherapy.jpg 
    Link: This is a public link -> https://s3.amazonaws.com/dde.resources/dog-aromatherapy.jpg 
    Size: 28660 
    Last Modified: Tue Jun 14 14:51:13 GMT-400 2016 
    Owner: myusername 
    ETag: f478788943af2296223a0f45a9c50610 
    Expiry Date: None 
    Expiration Rule: N/A 

元数据是正确的,因为image/jpeg

enter image description here

但实际的文件大小为27.9kb ,意思是headers大小28.6kb预计会有一个额外的〜700b左右的缺失...

enter image description here


当我在图像上点击查看,它显示了一个白色MINIBOX:

enter image description here

自己尝试一下:https://s3.amazonaws.com/dderesources/dog-aromatherapy.jpg

角上传代码

var upload_file = function (file, response) { 

    var formData = new FormData(); 

    formData.append('image', file); 

    return $http({ 
     method: 'PUT', 
     url: response.signed_request, 
     data: formData, 
     headers: { 
      'Content-Type': file.type 
     }, 
     cache: true 
    }); 
}; 

这是为什么?

回答

1

删除期间“。”从你的水桶名,使其一些这样的事,这将解决该问题

DDE资源

与一段斗名“”在代码中使用退出的URL时不会很好。

而在你的角码

processData: false 
+0

使用下面的语句改为'dderesources',这并没有解决这个问题。左边大小的文件是“27.9kb”,但是当我点击文件上的“视图属性”时,显示的大小是“28660”或“28.6kb”。如果我下载该文件并尝试打开它,则表示“它可能已损坏或使用预览无法识别的文件格式。” – Growler

+0

尝试在角度上传代码中将该http更改为https。 –

+0

角度'$ http'会根据需要更改:http://stackoverflow.com/questions/18839524/how-to-use-https-in-angularjs – Growler