为什么文件名 return nil 在 alamo 中会触发在 swift 3 中上传图片?
why filename will return nil in alamo fire uploading images in swift 3?
我想在我的项目中使用 alamo fire 上传多部分图像,但没有任何原因 alamo fire 文件名 return nil - 我该如何避免这种情况?
let params: Parameters = ["name": "image\(i)"]
Alamofire.upload(multipartFormData:
{
(multipartFormData) in
multipartFormData.append(UIImageJPEGRepresentation(imageUploadingViewController.imageUpload[i], 1.0)!, withName: "myfile", fileName: "file.jpeg", mimeType: "image/jpeg")
for (key, value) in params
{
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, to: "http:example.com/api/file?api_token=\(enterViewController.api_token)&id=\(self.postID)",headers:nil)
{ (result) in
switch result {
case .success(let upload,_,_ ):
upload.uploadProgress(closure: { (progress) in
UploadingViewController.progressing = progress.fractionCompleted
self.UpdateState()
if progress.fractionCompleted == 1.0 {
DispatchQueue.main.async {
UploadingViewController.fine = UploadingViewController.fine + 1
}
print(UploadingViewController.fine)
self.checkUploadProgress()
print("OK Finished!")
}
})
由于文件名
,应用程序将在此行崩溃
multipartFormData.append(UIImageJPEGRepresentation(UploadingImagesViewController.imageUpload[i], 1.0)!, withName: "myfile", fileName: "file.jpeg", mimeType: "image/jpeg")
请记住,有时它会起作用我不知道为什么会这样!
func sendImageToServerWithURL(_ URLString: URLConvertible, method: HTTPMethod, headers: [String : String]?, parameters: [String: Any]?, imageData : Data?,imageName:String,completionHandler: @escaping CompletionHandler) {
Alamofire.upload(multipartFormData: { (multipartFormData) in
if((imageData) != nil)
{
multipartFormData.append(imageData!, withName:imageName, fileName: "swift_file.png", mimeType: "image/png")
}
for (key, value) in parameters!
{
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, to:URLString ,headers : headers)
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
//Print progress
})
upload.responseJSON { response in
print (response.result)
completionHandler(response)
}
case .failure( _): break
//print encodingError.description
}
}
}
我正在使用上传图片的方法。我检查 if((imageData) != nil) 上传前的数据值。可能会有帮助。
我想在我的项目中使用 alamo fire 上传多部分图像,但没有任何原因 alamo fire 文件名 return nil - 我该如何避免这种情况?
let params: Parameters = ["name": "image\(i)"]
Alamofire.upload(multipartFormData:
{
(multipartFormData) in
multipartFormData.append(UIImageJPEGRepresentation(imageUploadingViewController.imageUpload[i], 1.0)!, withName: "myfile", fileName: "file.jpeg", mimeType: "image/jpeg")
for (key, value) in params
{
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, to: "http:example.com/api/file?api_token=\(enterViewController.api_token)&id=\(self.postID)",headers:nil)
{ (result) in
switch result {
case .success(let upload,_,_ ):
upload.uploadProgress(closure: { (progress) in
UploadingViewController.progressing = progress.fractionCompleted
self.UpdateState()
if progress.fractionCompleted == 1.0 {
DispatchQueue.main.async {
UploadingViewController.fine = UploadingViewController.fine + 1
}
print(UploadingViewController.fine)
self.checkUploadProgress()
print("OK Finished!")
}
})
由于文件名
,应用程序将在此行崩溃multipartFormData.append(UIImageJPEGRepresentation(UploadingImagesViewController.imageUpload[i], 1.0)!, withName: "myfile", fileName: "file.jpeg", mimeType: "image/jpeg")
请记住,有时它会起作用我不知道为什么会这样!
func sendImageToServerWithURL(_ URLString: URLConvertible, method: HTTPMethod, headers: [String : String]?, parameters: [String: Any]?, imageData : Data?,imageName:String,completionHandler: @escaping CompletionHandler) {
Alamofire.upload(multipartFormData: { (multipartFormData) in
if((imageData) != nil)
{
multipartFormData.append(imageData!, withName:imageName, fileName: "swift_file.png", mimeType: "image/png")
}
for (key, value) in parameters!
{
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, to:URLString ,headers : headers)
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
//Print progress
})
upload.responseJSON { response in
print (response.result)
completionHandler(response)
}
case .failure( _): break
//print encodingError.description
}
}
}
我正在使用上传图片的方法。我检查 if((imageData) != nil) 上传前的数据值。可能会有帮助。