2017-03-15 4 views
1

J'ai essayé de sélectionner le fichier en utilisant UIImagePicker. Mais quand j'ai essayé de télécharger le fichier en utilisant Alamofire multipartFormData il donne après erreurMultipart télécharger le fichier vidéo sélectionné sur le serveur dans swift 3.0

« multipartEncodingFailed (Alamofire.AFError.MultipartEncodingFailureReason.bodyPartURLInvalid (actifs-bibliothèque: //asset/asset.MOV id = 00178364-C308-4D2F -9B06-ECFBF21B9128 & ext = MOV)) »

utilisation de la méthode pour obtenir le fichier url

func selectVideoFromLibrary(sender: Any) { 

    let imagePickerController = UIImagePickerController() 

    imagePickerController.sourceType = .photoLibrary 
    imagePickerController.delegate = self 
    imagePickerController.mediaTypes = ["public.movie"] 

    present(imagePickerController, animated: true, completion: nil) 

} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    videoURL = info["UIImagePickerControllerReferenceURL"] as? NSURL 

    self.dismiss(animated: true, completion: nil) 

} 

Alamofire téléchargement pour télécharger le fichier vers le serveur

func uploadVideo(){ 

     let serverURL = AppConfig.BASEPATH + AppConfig.UPLOAD 

     print("upload link is",AppConfig.BASEPATH + AppConfig.UPLOAD) 

     let vURL = self.videoURL! as URL 
     let vName = videoName.data(using: .ascii) 
     let pName = name.data(using: .ascii) 
     let pNo = phoneNo.data(using: .ascii) 


     Alamofire.upload(
      multipartFormData: { multipartFormData in 

       multipartFormData.append(vURL, withName: "uploadedfile") 
       multipartFormData.append(vName!, withName: "title") 
       multipartFormData.append(pName!, withName: "pname") 
       multipartFormData.append(pNo!, withName: "phoneno") 

     }, 
      to: serverURL, 
      encodingCompletion: { encodingResult in 
       switch encodingResult { 
       case .success(let upload, _, _): 
        upload.responseJSON { response in 
         debugPrint(response) 
         print(response.result.value) 
        } 
       case .failure(let encodingError): 
        print(encodingError) 
       } 
     }) 

    } 
+0

même problème auquel font face de moi. pouvez-vous s'il vous plaît mettre à jour une réponse – Pritesh

Répondre

1

utilisant info [UIImagePickerControllerMediaURL] pour obtenir l'URL de fichier (file: // ...) au lieu du chemin d'actifs-bibliothèque sovle votre problème.

comme le code suivant

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    videoURL = info[UIImagePickerControllerMediaURL] as? NSURL 

    self.dismiss(animated: true, completion: nil) 

}