我正在尝试使用MIME类型的Image/jpeg上传图片,但由于某些原因,它们都将其上传为应用程序/Octet-Stream。
Heres我的代码段:
let storageRef = Storage.storage().reference().child("ProfilePictures/(image).jpg")
if let uploadData = UIImageJPEGRepresentation(self.pickedImage!, 0.5){
storageRef.putData(uploadData, metadata: nil, completion:{ (metadata, error) in })
我通过照片库的选择器获得了图像
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let editedImage = info[UIImagePickerControllerEditedImage] as? UIImage {
ImageButton.setBackgroundImage(editedImage, for: .normal)
ImageButton.setTitle("", for: .normal)
self.pickedImage = editedImage
}
dismiss(animated: true, completion: nil)
}
您必须为同一设置元数据。
尝试。
metadata = {contentType:'image/jpeg'};
let imageNode = storageRef.child("imagePath/(UUID().uuidString)")
let metaData = StorageMetadata()
metaData.contentType = "image/jpeg"
imageNode.putData(data, metadata: metaData) { (_, _) in
}
说明:
如果我们在没有任何元数据的情况下上传文件数据,它将识别为应用程序/八位钟。由于数据的未知格式或(缺少扩展),它保存为二进制文件,即八位字节文件。
鉴于该指定文件或数据类型,我们需要定义其ContentType。我们可以通过分配媒体类型来做到这一点,这也称为 MIME协议。
一些常见的 MIME类型:
扩展 | Mime Type |
---|---|
.gif | 图像/gif |
.html | 文本/html |
.jpg或.jpeg | 图像/jpeg |
.mp4 | 视频/MP4 |