0

我正在使用以下成功上传文件的代码在天蓝色服务器上上传图像文件。(我可以在服务器上看到它)

self.manager.upload(multipartFormData: { (multipart) in
        
        multipart.append(fileData, withName: "file",fileName: "uploading.png" , mimeType: "image/png")
        
    }, to: url.description, method: .put, headers: ["x-ms-blob-type":"BlockBlob","Content-type": "multipart/form-data","Content-Disposition" :"form-data"]) { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.response { answer in
                print("statusCode: \(String(describing: answer.response?.statusCode))")
                comp(true,"Documnet Uploaded Successfully")
            }
            
            upload.uploadProgress { progress in
                //call progress callback here if you need it
            }
        case .failure(let encodingError):
            print("multipart upload encodingError: \(encodingError)")
            comp(false,"Unable to Upload the documnet")
        }
}

但是当我下载文件时(手动或通过代码)。图片打不开。它说

它可能已损坏或使用了 Preview 无法识别的文件格式。

当我在记事本中打开文件时。下面的行出现在每个上传的图像的顶部。没有这些行,文件是“OKAY”。我不知道为什么每次都会自动添加这些。

--alamofire.boundary.5243a11a13e8a8f4

内容处置:表单数据;名称=“文件”;文件名="上传.png"

内容类型:图片/png

请提出解决方案。

4

2 回答 2

0

不是直接的答案,但这里有一些建议你可以看看。

1.在上传到azure之前检查图像是否正常。

2.通过代码将其上传到azure时,检查是否可以在azure门户中查看正确的图像内容(在azure门户-> blob存储->单击图像->然后选择编辑)。

3.我认为根本原因可能是由于请求标头不正确。

通过代码将图片上传到 azure 时,请使用 fiddler 等工具检查其请求/响应标头。

然后手动将图像上传到 azure,也使用 fiddler 检查它的请求/响应标头。

然后您可以比较标题(代码与手动),找出有什么区别,然后您可以相应地对代码进行一些更改。

于 2020-01-16T06:03:23.150 回答
0

一切正常。请求,标题每一个。由于多部分请求而发生问题。将照片或 Pdf 上传到 azure 就像将其上传到 FTP 一样,这是一个简单的请求。这不是多部分请求。

于 2020-01-21T09:01:31.227 回答