【发布时间】:2017-08-26 04:51:29
【问题描述】:
我无法让 ifModifiedSince 工作。这是我的代码:
func updateDatabase()
{
let objectRequest = AWSS3GetObjectRequest()
objectRequest?.key = "wa/wa2016/idahoGmu.tiff"
objectRequest?.bucket = bucketName
let dateComponents = NSDateComponents()
dateComponents.day = 10
dateComponents.month = 4
dateComponents.year = 2018
let date = NSCalendar.current.date(from: dateComponents as DateComponents)
// TODO This isn't working. It grabs the file regardless of date.
objectRequest?.ifModifiedSince = date
let s3 = AWSS3.default()
s3.getObject(objectRequest!).continueWith
{
(task) -> AnyObject! in if let error = task.error
{
print("Error: \(error.localizedDescription)")
}
if let result = task.result
{
let fileManager = FileManager.default
let documents = Bundle.main.resourcePath
let writePath = documents?.appending("/Content/idahoGmu.tiff")
let output = result as AWSS3GetObjectOutput
let fileData = output.body as! Data
fileManager.createFile(atPath: writePath!, contents: fileData, attributes: nil)
}
return nil;
}
}
格式化日期有什么问题吗?我读了这个关于日期格式的问题(但现在报告为已修复): AWSS3GetObjectRequest ifModifiedSince not working
当我打印出日期时,它看起来像这样:
2018-04-10 07:00:00 +0000
【问题讨论】:
-
下载一个对象并查看
Last-Modified标头。那是你的格式。 -
好的,这是我下载的对象:
-
contentLength = 435278; contentType = "图像/tiff"; lastModified = "2017-03-14 19:46:29 +0000";但是我传入的 ifModifiedSince 字段是一个日期对象(参见上面的 dateComponents 变量)。由于它是一个对象,因此日期并没有我可以控制的格式。我错过了什么?
-
A little more info ... 这是请求中的 ifModifiedSince 日期:
"If-Modified-Since" = "Fri, 10 Apr 2020 07:00:00 GMT"这是返回的对象中的 lastModified:lastModified = "2017-03-14 19:46:29 +0000"如何控制请求(因为它是一个对象,而不是一个字符串)? -
@Yosuke Matsuda 您对此有何见解?
标签: ios swift amazon-web-services amazon-s3 aws-sdk