Alamofire 不发送上传请求(根本没有建立连接)

Alamofire not sending upload-request (no connection established at all)

我想上传最近从 DocumentPicker(例如 iCloud、Dropbox 等)下载(在我的应用程序中)的文件 所以我有这个文件的 NSUrl (urlToFile) (已验证)

我用这个代码上传:

  upload(.POST, Config.uploadURL, urlToFile!)
    .progress { (bytesWritten, bytesWrittenInTotal, bytesToBeWritten) -> Void in
    println("Bytes: \(bytesWrittenInTotal)")
  }
  .responseString{(request, response, JSON, error) in
    println(request)
    println(response)
    println(JSON)}

根本没有上传连接。接收上传的 php 文件具有日志功能,因此每次调用该文件都会被记录下来。上面显示的代码从未建立连接。

这是我收到的输出:

{ URL: http://correctURLtoThePHPScript }

nil

nil

错误信息:

The operation couldn’t be completed. Is a directory

我认为这是由于 documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) 返回带有尾部斜杠的 fileUrl。但即使我通过下面的代码删除尾部的斜杠,我也会收到相同的错误消息!

let s = url.URLString
let strippedUrl = s.substringToIndex(advance(s.startIndex, count(s)-1))
urlToFile = NSURL(string: strippedUrl)

解决方法: 使用 urlToFile = NSURL(fileURLWithPath: strippedUrl)!!

总结所有评论:

  • 始终打印/收听从 Alamofire(或 Core Data,或其他任何东西)返回的 NSError 值。他们可以通过这些错误与您的代码进行通信的唯一方法
  • 问题是文件路径以路径分隔符结尾,即 /path/to/my/file.txt/
  • 删除末尾有问题的/
let s: NSString = "/path/to/my/file/" as NSString
s.substringToIndex(s.length-1)