2017-09-04 74 views
0

我想用alamo fire在我的项目中多次上传多部分图像,没有理由alamo fire文件名将返回零 - 我该如何避免这种情况?为什么文件名会在alamo中返回零,在swift 3中上传图片?

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") 

的记住,有些时候它会工作,我不知道为什么会出现这种情况!

+0

你是否在上传函数中设置了标题和值? –

+0

是的请等待,我会将它添加到我的代码 –

回答

1
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 
     } 
    } 
} 

我正在使用该方法上传图片。如果((imageData)!= nil)上传前的数据值,我检查。可能会对您有所帮助。

+0

该应用程序不让我运行,因为CompletionHandler –

+0

您需要检查(值为AnyObject).data(使用:String.Encoding.utf8.rawValue)!使用前的数据值 –

+0

我用过,当图像数据为零时,这将返回使用:String.Encoding.utf8.rawValue)!但是当我上传图像到服务器时,服务器只显示文本文件 –

相关问题