Azure blob put - 图像损坏
Azure blob put - image corrupt
我正在尝试使用 azure 存储 blob 将项目放在上面。
它适用于 PDF、MP3,但当我上传 IMAGE 文件(或 TXT 文件)时,文件已更改。
当我下载 pdf 或 mp3 时,文件是可读的。但是对于图像,它说它已损坏...
然而 TXT 文件是可读的,但内容被 webkitfromboundary
包围
我认为这就是图像不起作用的原因...
例子:
只有 hello word
的 TXT 文件 ->
------WebKitFormBoundary3rxc8zHbnz4expeP
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
hello word
------WebKitFormBoundary3rxc8zHbnz4expeP--
所以我想这就是图像不起作用的原因
所以这是我的上传(来自angularJS)---我使用https://github.com/danialfarid/ng-file-upload
Upload.upload
url: url
method: 'PUT'
headers: head
file: file
.success (data, status, headers, config) ->
console.log("SUCCES!!!")
head
的值 -(对于文本文件)
{"x-ms-version":"2014-02-14","x-ms-blob-type":"BlockBlob","x-ms-date":"2015-11-06 10:02:24 GMT","Authorization":"SharedKey generate_key","Content-Type":"text/plain"}
当然,当这是一张图片时 content-type 会发生变化(需要 file.type)
如果有帮助,这是来自网页的请求headers->
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:fr,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Content-Length:214
Content-Type:application/json;charset=utf-8
Host:myaccount.blob.core.windows.net
Origin:http://localhost:9000
Referer:http://localhost:9000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
和请求负载 ->
------WebKitFormBoundary3rxc8zHbnz4expeP
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
------WebKitFormBoundary3rxc8zHbnz4expeP--
所以,有人有想法吗?
答案是在 http 请求中发送的 Content-Type
从来都不是好的类型。
因为
Upload.upload
不允许您更改它。
但是 你可以使用同一个库的 http
方法,它会像那样工作:
Upload.http
url: uploadInfo.url
method: 'PUT'
headers: {
"Content-Type": file.type
[other headers ...]
}
data: file
好了!有效!
我正在尝试使用 azure 存储 blob 将项目放在上面。 它适用于 PDF、MP3,但当我上传 IMAGE 文件(或 TXT 文件)时,文件已更改。
当我下载 pdf 或 mp3 时,文件是可读的。但是对于图像,它说它已损坏... 然而 TXT 文件是可读的,但内容被 webkitfromboundary
包围我认为这就是图像不起作用的原因...
例子:
只有 hello word
的 TXT 文件 ->
------WebKitFormBoundary3rxc8zHbnz4expeP
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
hello word
------WebKitFormBoundary3rxc8zHbnz4expeP--
所以我想这就是图像不起作用的原因
所以这是我的上传(来自angularJS)---我使用https://github.com/danialfarid/ng-file-upload
Upload.upload
url: url
method: 'PUT'
headers: head
file: file
.success (data, status, headers, config) ->
console.log("SUCCES!!!")
head
的值 -(对于文本文件)
{"x-ms-version":"2014-02-14","x-ms-blob-type":"BlockBlob","x-ms-date":"2015-11-06 10:02:24 GMT","Authorization":"SharedKey generate_key","Content-Type":"text/plain"}
当然,当这是一张图片时 content-type 会发生变化(需要 file.type)
如果有帮助,这是来自网页的请求headers->
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:fr,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Content-Length:214
Content-Type:application/json;charset=utf-8
Host:myaccount.blob.core.windows.net
Origin:http://localhost:9000
Referer:http://localhost:9000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
和请求负载 ->
------WebKitFormBoundary3rxc8zHbnz4expeP
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
------WebKitFormBoundary3rxc8zHbnz4expeP--
所以,有人有想法吗?
答案是在 http 请求中发送的 Content-Type
从来都不是好的类型。
因为
Upload.upload
不允许您更改它。
但是 你可以使用同一个库的 http
方法,它会像那样工作:
Upload.http
url: uploadInfo.url
method: 'PUT'
headers: {
"Content-Type": file.type
[other headers ...]
}
data: file
好了!有效!