我有一个存储收据的应用程序。它的工作方式是,您使用应用程序保存图像,然后将其上传到amazon s3存储桶。要上传到amazon s3,您需要其本地路径。
所以这就是我正在做的事情。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
receiptImageView.image = image
Model.sharedModel.currentImage = image
print(info)
}
self.dismiss(animated: true, completion: nil)
//MAking the localpath of the image
let imageAWSName = "ios_" + NSUUID().uuidString + ".jpg"
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let photoURL = NSURL(fileURLWithPath: documentDirectory)
let localPath = photoURL.appendingPathComponent(imageAWSName)
if !FileManager.default.fileExists(atPath: localPath!.path) {
do {
try UIImageJPEGRepresentation(image, 1.0)?.write(to: localPath!)
Model.sharedModel.currentlocalpath = localPath
print("file saved")
}catch {
print("Error saving receipt photo local path")
}
}
else {
print("Error - localpath already exists")
}
路径看起来像这样 -
file:///Users/Al/Library/Developer/CoreSimulator/Devices/FE04FF78-914B-4224-A84B-D10521E0F845/data/Containers/Data/Application/115C6A1B-E61F-4082-AA59-4674D87DF31E/Documents/ios_5AB04F97-32C9-441E-97C8-44D4D2725ADD.jpg
现在可以直接将收据上传到s3存储桶。但是,如果我关闭应用程序,然后重新加载它不起作用。
我认为这是因为每次运行应用程序时FE04FF78都会更改。 如果是这样的话,我该如何获得图像的路径?
答案 0 :(得分:0)
如果需要,您只应在Documents
下保存文件名或任何子文件夹。如果您只是从您的设备打开应用程序,那么它应该可以正常工作。但是,每次您的应用程序编译(您从Xcode调试/运行应用程序)时,UUID(在本例中为FE04FF78-914B-4224-A84B-D10521E0F845
)都将更改。
答案 1 :(得分:0)
您应该只保存文件名并随时获取文档路径,只要您需要并附加到您的文件名
因为文档路径每次都会更改,只要新的应用实例启动