2016-12-08 3 views
0

Я пытаюсь загрузить видео в файл сервера через Alamofire, но я не мог получить «данные» будет passed..its всегда нольNSURL к NSData или данные всегда ноль

var videoURL = NSURL(string: "") 
    //returns Optional(file:///private/var/mobile/Containers/Data/Application/1FB40086-228B-4011-A9D4-7874E2EEF9F4/tmp/4A6AAD76-B899-4B67-8E96-925DA4AE9E93.mov) 


    let videodata = NSData(contentsOfFile: (videoURL?.absoluteString)!) 
    //nil 
    let url = NSURL(fileURLWithPath: (videoURL?.absoluteString)!) 

    let videodata = NSData(contentsOf: url as URL) 
    //nil 

Если я получаю данные привел бы способ для меня, чтобы сделать это:

Alamofire.upload(multipartFormData: { multipartFormData in 
       multipartFormData.append (videodata as! Data, withName: "file", fileName: "file.mov", mimeType: "video/quicktime") 
enter code here 

EDIT ::

спасибо, ребята, с вашей помощью я изо всех сил свой выход оттуда в этот файл не найден, но я вижу, что файл сохраняется в моем g все, любой ключ спасет мой день.

 print (videoURL!) 
//returns file:///private/var/mobile/Containers/Data/Application/3F280477-DA16-4A67-AE60-D6247143352E/tmp/1E4AC002-6AD0-41E1-9E0D-A09B697F81F7.mov 


     print (videoURL!.path!) 
     // returns /private/var/mobile/Containers/Data/Application/3F280477-DA16-4A67-AE60-D6247143352E/tmp/1E4AC002-6AD0-41E1-9E0D-A09B697F81F7.mov 


     var videoData = NSData() 

     let path = videoURL!.path! 
     if FileManager.default.fileExists(atPath: path) { 

     }else { 
       print("Could not fin file at url: \(videoURL!.path!)") 
      // here it throws file not found 
     } 
+0

'.absoluteString' * не * правильный метод для преобразования URL в путь, сравнить http://stackoverflow.com/questions/34135305/nsfilemanager-defaultmanager-fileexistsatpath-returns-false-instead- из-правда. –

+0

Да, все пробовал все ... просто с видеоURL, но пошел он тщетно –

+1

videoUrl не обязательно в вашем коде, поэтому вам нужно развернуть его просто поместив! в конце видеоURL! – Sanju

ответ

1

Использование absoluteString возвращает строку, которая включает в себя file:// в начале, и вы не хотите этого. Вы должны вернуться на путь URL

guard let videoPathString = videoURL.path as? String else { 
    //handle error here if you can't create a path string 
    return 
} 

var videoData = NSData() 

//check if file exists at this path first 
if (NSFileManager.defaultManager().fileExistsAtPath(videoPathString)) { 
    videoData = NSData(contentsOfFile: NSString(videoPathString)) 
} else { 
    //if file does not exist at that path, handle here 
} 
2

В Swift 3 использовании нативного URL и Data вместо NSURL и NSData.

if let videoURL = URL(string: urlString), let videodata = try? Data(contentsOf: videoURL) { 
    //Add code of Alamofire here 
} 
Смежные вопросы