Azure blob put - 图像损坏

时间:2015-11-06 10:10:51

标签: angularjs azure azure-storage-blobs ng-file-upload

我正在尝试使用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"}

当然,当这是一张图片时,内容类型会发生变化(需要 file.type

如果它可以提供帮助,这是来自网络页面的请求标题 - >

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--

那么,有人有想法吗?

1 个答案:

答案 0 :(得分:1)

anwser是http请求中发送的Content-Type从来都不是好的类型。

这是因为

Upload.upload

不允许您更改它。

您可以使用同一个库的http方法,它的工作原理如下:

  Upload.http
    url: uploadInfo.url
    method: 'PUT'
    headers: {
    "Content-Type": file.type
    [other headers ...]
  }
  data: file

然后你去!它有效!