我正在尝试使用Alamofire从表格视图UI将音频文件上传到服务器。
我发现在multipartformdata行中连接URL的方式不正确,应该导致了应用程序崩溃。请帮助我设置正确的方式。
@IBAction func Upload(_ sender: Any) {
let voiceData = try? Data(contentsOf: getDirectory())
let params : [String:String] = []
Alamofire.upload(
multipartFormData: { (multipartForm) in
multipartForm.append(voiceData!, withName: "voice", fileName: "file", mimeType: "audio/m4a")
for (key, value) in params {
multipartForm.append(value.data(using: String.Encoding.utf8)!, withName: key)
}
},
usingThreshold : SessionManager.multipartFormDataEncodingMemoryThreshold,
to : "http://18.136.194.124/voupload.php",
method: .post){ (result) in
switch result {
'''''''
}
func getDirectory() -> URL
{
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentDirectory = paths[0]
return documentDirectory
}
@IBOutlet weak var mtable: UITableView!
@IBOutlet weak var Butlabel: UIButton!
var recordingSession:AVAudioSession!
var audiorecorder:AVAudioRecorder!
var audioPlayer:AVAudioPlayer!
var numberOfrecords = 0
@IBAction func RecordButton(_ sender: Any) {
if audiorecorder == nil
{
numberOfrecords += 1
let filename = getDirectory().appendingPathComponent("\(numberOfrecords).m4a")
let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC), AVSampleRateKey: 1200, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]
// VOXIT STARTS
do
{
audiorecorder = try AVAudioRecorder(url: filename, settings: settings)
audiorecorder.delegate = self
audiorecorder.record()
Butlabel.setTitle("Stop Recording", for: .normal)
}
catch{
displayAlert(title: "Ups!", message: "Recording Failed")
}
}
else
{
// STOP rec
}
}
如果有人能为我解释一下MultiDataForm代码,将不胜感激。任何帮助都会被赞赏。