Alamofire не отправляет запрос на загрузку (соединение вообще не установлено)

Я хочу загрузить файл, который был недавно загружен (в моем приложении) из 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}

ноль

ноль

Сообщение об ошибке:

Операция не может быть завершена. Это каталог

Я думал, что это связано с 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) !!


person gutenmorgenuhu    schedule 03.06.2015    source источник
comment
Пожалуйста, распечатайте параметр ошибки, чтобы мы могли отладить этот код. Также: Config.uploadURL правильно, не так ли?   -  person Diego Freniche    schedule 03.06.2015
comment
Спасибо за быстрый ответ. Ошибка: Ошибка: необязательно (Error Domain = NSPOSIXErrorDomain Code = 21 Операция не может быть завершена. Каталог UserInfo = 0x7fd3b261b9d0 {_kCFStreamErrorCodeKey = 21, _kCFStreamErrorDomainKey = 1})   -  person gutenmorgenuhu    schedule 03.06.2015
comment
Похоже, что URL-адрес вашего файла действительно является URL-адресом каталога?   -  person Diego Freniche    schedule 03.06.2015
comment
Ну вроде. Возвращаемое значение DocumentPicker - это NSUrl с полным файлом filePath плюс имя файла, но с закрывающим символом /! Мне нужно избавиться от этого, сохранив действительный NSUrl   -  person gutenmorgenuhu    schedule 03.06.2015
comment
РЖУ НЕ МОГУ! Всегда печатайте / используйте данные NSError: это единственный способ, которым Alamofire может с вами поговорить   -  person Diego Freniche    schedule 03.06.2015
comment
=) На самом деле я думал, что распечатал ошибку, и она была нулевой. Как мне избавиться от завершающего /?   -  person gutenmorgenuhu    schedule 03.06.2015


Ответы (1)


Подводя итог всем комментариям:

  • всегда распечатывайте / слушайте NSError значения, возвращаемые Alamofire (или Core Data, или что-то еще). Единственный способ, которым они могут связаться с вашим кодом, - это ошибки.
  • проблема заключалась в том, что путь к файлу заканчивался разделителем пути, т.е. /path/to/my/file.txt/
  • чтобы удалить оскорбительный / в конце:
let s: NSString = "/path/to/my/file/" as NSString
s.substringToIndex(s.length-1)
person Diego Freniche    schedule 03.06.2015
comment
Еще раз спасибо. Я реализовал это сейчас, но все равно получаю ту же ошибку! Я обновил свой вопрос, чтобы дать больше информации - person gutenmorgenuhu; 03.06.2015