2017-11-07 19 views
-2

このソースコードを使用してイメージをアップロードしていますが、ビデオは正常にアップロードされていません。ビデオをアップロードするためのソースコードを変更する必要があります。ここで私のソースコードを共有しています。イメージとビデオの両方を迅速にサーバーにアップロードする方法3

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

{ 

    //imagepicker.allowsEditing = false 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] { 

     print("image is:\(pickedImage)") 



     imageView.contentMode = .scaleAspectFit 
     imageView.image = pickedImage as? UIImage 

     hideLabel.isHidden = true 

     if let imageURL = info[UIImagePickerControllerReferenceURL] as? NSURL { 
      let result = PHAsset.fetchAssets(withALAssetURLs: [imageURL as URL], options: nil) 


      let fileNameObj = result.lastObject?.value(forKey: "filename") as? String ?? "Unknown" 
      UserDefaults.standard.set(fileNameObj, forKey: "key4") 


      self.fileNameLabel.text = fileNameObj 
      picker.dismiss(animated: true, completion: nil) 


      print("filename is:\(fileNameObj)") 

     } 
    } 


    // let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! 
    if let videoUrl = info[UIImagePickerControllerMediaURL] as? URL { 


     strUrl = videoUrl.absoluteString 

     last4 = strUrl.substring(from:strUrl.index(strUrl.endIndex, offsetBy: -10)) 


     self.fileNameLabel.text = last4 

     picker.dismiss(animated: true, completion: nil) 
     print("videourl is:\(String(describing: strUrl))") 
     print("last4 is:\(String(describing: last4))") 

    } 




} 




func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData { 
    //var body = Data(); 
    var body = Data() 

    if parameters != nil { 
     for (key, value) in parameters! { 
      body.appendString(string: "--\(boundary)\r\n") 
      body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n") 
      body.appendString(string: "\(value)\r\n") 
     } 
    } 


    let imgObj = fileNameLabel.text 
    let videoObj = fileNameLabel.text 

    let newImg = UserDefaults.standard.string(forKey: "key4") 


    if imgObj == newImg{ 


     //let newObj = "manu.jpg" 
     //let manuObj = fileNameLabel.text 
     body.appendString(string: "--\(boundary)\r\n") 

     let mimetype = "image/jpg" 

     //let defFileName = fileNameObj 



     let imageData = UIImageJPEGRepresentation(imageView.image!, 1) 
     print("defFileName is :\(String(describing: imageData))") 

     let fnamed = fileNameLabel.text 
     print("fnamed is:\(fnamed!)") 
     body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(fnamed!)\"\r\n") 

     print("njsc is:\(body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(fnamed!)\"\r\n"))") 

     body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n") 
     body.append(imageData!) 
     body.appendString(string: "\r\n") 
     body.appendString(string: "--\(boundary)--\r\n") 


    } 
    else { 
     let kBoundary = "Boundary-\(UUID().uuidString)" 
     let kStartTag = "--%@\r\n" 
     let kEndTag = "\r\n" 
     let kContent = "Content-Disposition: form-data; name=\"%@\"\r\n\r\n" 



     body.append(String(format: kStartTag, boundary).data(using: String.Encoding.utf8)!) 
     body.append(String(format: "Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", "file", last4!).data(using: String.Encoding.utf8)!) 
     body.append("Content-Type: video/mp4\r\n\r\n".data(using: String.Encoding.utf8)!) 
     body.appendString(string: strUrl) 
     body.append(String(format: kEndTag).data(using: String.Encoding.utf8)!) 

     // close form 
     body.append("--\(boundary)--\r\n".data(using: String.Encoding.utf8)!) 
    } 
    return body as NSData 
} 

私はこの問題を解決するのを手伝ってください。私はiOS Swiftを初めて使用しています。または私に成功し

答えて

0
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
    { 
     print(info) 
     if info[UIImagePickerControllerMediaType] as? String == "public.image" 
     { 
      if let imagedata = info[UIImagePickerControllerOriginalImage] as? UIImage  { 

       PostImageView = imagedata 
       btnphoto.setImage(imagedata, for: .normal) 

      } 

      dismiss(animated: true, completion: nil) 
     } 
     else 
     { 
      if let url = info[UIImagePickerControllerMediaURL] as? URL 
      { 
       SelectUrl = url 
       dismiss(animated: true, completion: nil) 
       play(url: SelectUrl!) 

      } 

     } 
    } 

    func play(url:URL) 
    { 
     let player = AVPlayer(url: url) 
     let playerViewController = AVPlayerViewController() 
     playerViewController.player = player 
     self.present(playerViewController, animated: true) 
     { 
      playerViewController.player!.play() 
     } 

     do { 
      let asset = AVURLAsset(url: url , options: nil) 
      let imgGenerator = AVAssetImageGenerator(asset: asset) 
      imgGenerator.appliesPreferredTrackTransform = true 
      let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(0, 1), actualTime: nil) 
      thumbnail = UIImage(cgImage: cgImage) 

      btnVideo.setImage(thumbnail, for: .normal) 



     } catch let error { 
      print("*** Error generating thumbnail: \(error.localizedDescription)") 
     } 

    } 

サービスコードで

if self.thumbnail != nil 
         { 

          dicParameter.setObject(self.thumbnail!, forKey: "video_thumb" as NSCopying) 


          let fileData = Utilities.getDataFrom(url: self.SelectUrl) 

          if fileData != nil { 
           var fileParameter : [String : Any] = [:] 
           fileParameter[FileParameter.fileName] = "video.mov" 
           fileParameter[FileParameter.fileData] = fileData 
           fileParameter[FileParameter.fileKey] = "post_file" 
           dicParameter.setObject(fileParameter, forKey: "post_file" as NSCopying) 
          } 


         } 
         else 
         { 

          let imageData = UIImagePNGRepresentation(self.PostImageView!) 
          if imageData==nil { print("image data is nil"); return } 
          dicParameter.setObject(self.PostImageView, forKey: "post_file" as NSCopying) 

         } 
画像や動画をアップロードするための任意の関連リンクを送ってください
関連する問題