我尝试使用Parse Server保存到S3存储桶,当文件较小时可以正确保存,例如864.2KB。但是,当文件很大(例如5MB)时,它会抱怨一条消息:“数据无法读取,因为格式不正确”
我正在使用以下代码将视频文件保存到S3
func saveVideo(withVideoURL url: URL){
let post = PFObject(className: "Post")
post["caption"] = "Out of the game for 6 months, but back with vengeance. Meet your 2017 AO Men's champion"
do{
let data = try Data(contentsOf: url)
print(data)
post["media"] = PFFile(data: data)
post.saveInBackground { (success, error) in
if success{
print("video saved")
}else{
print("failed")
if error != nil{
print(error!.localizedDescription)
}else{
print("erorr is nil")
}
}
}
}catch let error as NSError{
print("can't read")
print(error.localizedDescription)
}
}
此外,即使小视频文件确实被保存到S3,它也包含扩展名.bin而不是例如.mp4。我想知道这里发生了什么 网址最终看起来像这样
https://s3-us-west-1.amazonaws.com/sampleApp/19d5bce20f8b55te1b1b8f370212533e5_file.bin
答案 0 :(得分:1)
您需要规定内容类型。你可以这样做:
post["media"] = PFFile(data: data, contentType: "video/mp4")
答案 1 :(得分:1)
parse-server
索引文件中的以下设置可以帮助您:
var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '20mb'}));
app.use(bodyParser.urlencoded({limit: '20mb', extended: true}));
如果您使用弹性beanstalk,则必须在文件夹files.config
中包含名为.ebextensions
的文件,其内容如下。
files:
/etc/nginx/conf.d/proxy.conf:
content: |
client_max_body_size 20M;
这解决了我的问题。