2016-12-08 16 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 

编辑::

感谢你们,在你们的帮助我一直在努力我出来的路到该文件未找到错误,但我可以看到该文件正在保存在我的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

是啊有种尝试的一切... 只是与videoURL,但它徒劳无益 –

+1

videoUrl是可选的在您的代码,所以你需要解开它只是放置!在videoURL结束! – 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

路径在斯威夫特3使用本地URLData代替NSURLNSData

if let videoURL = URL(string: urlString), let videodata = try? Data(contentsOf: videoURL) { 
    //Add code of Alamofire here 
}