for ios swift server

ios - for - vapor swift



iOS enviando archivo de audio al servidor web (2)

Creo que esta respuesta te ayudará a:

Enviar audio desde una aplicación Swift a PHP Server, y en algún lugar se pierde el audio

Especialmente debe prestar atención a esta sección:

let boundary = "--------14737809831466499882746641449----" let beginningBoundary = "--/(boundary)" let endingBoundary = "--/(boundary)--" let contentType = "multipart/form-data;boundary=/(boundary)"

Por lo tanto, para las cargas de archivos de audio también es importante.

Actualmente estoy creando una aplicación para iPhone con Swift y quiero enviar archivos de audio desde mi aplicación a mi servidor web. Actualmente estoy usando MPMediaPickerController , que me permite seleccionar un archivo de audio dentro de mi aplicación, pero una vez que selecciono el archivo, me sigue diciendo:

ipod-library: //item/item.mp3? id = 12341234

y no puedo enviar el archivo a mi servidor web. Necesito enviar el archivo de audio a mi servidor web en formato NSData . ¿Alguien puede encender una luz en:

1) Lo que puedo estar haciendo mal o,

2) otra forma de enviar los archivos de audio?


import AssetsLibrary, import AVFoundation, import MediaPlayer, var soundFileURL:URL!, var audio_data: Data? = nil** func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) { let item = mediaItemCollection.items[0] as? MPMediaItem ?? MPMediaItem() let url: URL? = item.value(forProperty: MPMediaItemPropertyAssetURL) as? URL exportiTunesSong(assetURL: url!) { (response) in print(response ?? "responce") } let songTitle: String = item.value(forProperty: MPMediaItemPropertyTitle) as! String lbl_for_file_name.text = songTitle self.dismiss(animated: true, completion: nil) } func mediapicker() { let mediaPicker = MPMediaPickerController(mediaTypes: .music) mediaPicker.delegate = self present(mediaPicker, animated: true, completion: {}) } func mediaPickerDidCancel(_ mediaPicker: MPMediaPickerController) { print("User selected Cancel tell me what to do") self.dismiss(animated: true, completion: nil) mediaPicker.dismiss(animated: true) { _ in } } func exportiTunesSong(assetURL: URL, completionHandler: @escaping (_ fileURL: URL?) -> ()) { let songAsset = AVURLAsset(url: assetURL, options: nil) let exporter = AVAssetExportSession(asset: songAsset, presetName: AVAssetExportPresetAppleM4A) exporter?.outputFileType = "com.apple.m4a-audio" exporter?.metadata = songAsset.commonMetadata let filename = AVMetadataItem.metadataItems(from: songAsset.commonMetadata, withKey: AVMetadataCommonKeyTitle, keySpace: AVMetadataKeySpaceCommon) var songName = "Unknown" if filename.count > 0 { songName = ((filename[0] as AVMetadataItem).value?.copy(with: nil) as? String)! } //Export mediaItem to temp directory exportURL = URL(fileURLWithPath: NSTemporaryDirectory()) .appendingPathComponent(songName) .appendingPathExtension("m4a") exporter?.outputURL = exportURL do { self.audio_data = try Data.init(contentsOf: exportURL!) print("here audio data is /(self.audio_data!)") } catch { print(error) } }

PS usa Audio_data para enviar o cargar el lado del servidor usando Alamofire