을 사용하여 Open Asset에 Open Asset으로 동시에 여러 파일을 업로드하고 있는데이 파일을 their REST API으로 사용할 수는 있지만 대부분의 EXIF 데이터가 삭제됩니다. 불행하게도, EXIF 데이터는 GPS 태그와 다양한 웹 클라이언트를 통한 몇 가지 다른 것들을 필요로하는 것처럼 필수적입니다.iOS Swift + Alamofire에서 exif 데이터로 사진 업로드
몇 가지 연구를하고 후에, 나는 내가 NSData
에 사진을 변환 할 수 UIImageJPEGRepresentation
을 사용하고 있기 때문에 문제가 발견 (Alamofire
가 기대이나 내가 날 위해 일하는 것이라고 생각하지 않는 fileURL, 무엇이다?).
BSImagePicker 라이브러리를 사용하여 사용자가 복수의 사진을 선택하거나 선택할 수 있도록 허용하는 경우 으로 변환되는 PHAsset의 배열이 반환됩니다. 여기에 (collectedImages
글로벌 사전이다) 이렇게 내 기능입니다 : 내가 전화 로컬 이미지에 PHAsset
에서 전체 경로를 사용할 수 있다면 나는 EXIF 데이터를 유지할 수 있다고 생각
func compressPhotos(assets: [PHAsset]) -> Void {
for asset in assets {
let filename = self.getOriginalFilename(asset)
let assetImage = self.getAssetPhoto(asset)
let compressedImage = UIImageJPEGRepresentation(assetImage, 0.5)! // bye bye metadata :(
collectedImages[filename] = compressedImage
print("compressed image: \(filename)")
}
}
하지만, Alamofire
은이를 지원하지 않는 것으로 보입니다. 나는 그것이 틀렸다는 것을 희망한다. 모든 EXIF 데이터를 유지하면서 (너무 다른 매개 변수를 전달하면서)
func uploadPhotos(projectId: String, categoryId: String, data: [String: NSData], completionHandler: (AnyObject?, NSError?) ->()) {
var jsonBody = [AnyObject]() //lazy
Alamofire.upload(
.POST,
self.url + "/Files",
multipartFormData: { multipartFormData in
for (filename, img) in data {
jsonBody.append(["project_id": projectId, "category_id": categoryId, "original_filename": filename])
multipartFormData.appendBodyPart(data: img, name: "file", fileName: filename, mimeType: "image/jpeg")
print("img size: \(img.length)")
}
let jsonData = jsonToNSData(jsonBody)
print("_jsonBody: \(jsonBody)")
multipartFormData.appendBodyPart(data: jsonData!, name: "_jsonBody")
print("multipart: \(multipartFormData)")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
switch response.result {
case .Success(let value):
completionHandler(value as? NSArray, nil)
case .Failure(let error):
completionHandler(nil, error)
}
}
case .Failure(let encodingError):
print(encodingError)
}
}
)
}
그래서 제 질문은, 어떻게 여러 장의 사진을 업로드 할 수있다
: 여기 내 업 로더는?Alamofire
은 멋진 라이브러리이며 여기에서 사용하고 싶습니다. 그러나 EXIF 데이터를 보관할 수없는 경우 업로드 프로세스와 결혼하지 않았습니다.
아, 그 약속이 들리 겠지만 작동하지 않습니다 ... 이제 오류가 발생했습니다. '파일 URL에 연결할 수 없습니다. file : ///var/mobile/Media/DCIM/102APPLE/IMG_2469.JPG'' 왜 도달 할 수 없는지 모르겠다. (소스 코드) (https://github.com/Alamofire/Alamofire/blob/master/Source/MultipartFormData.swift) (255 행)를 확인하면 이것은 OS X 10.10 운영 체제 또는 그 밖의 것을 확인하고 있습니까? 실제로 어떤 일이 일어나고 있는지 모르겠습니다. – crmackey