2016-12-08 14 views
0

내가 Alamofire를 통해 서버의 파일에 동영상을 업로드하려고하지만 난 "데이터"를 가져올 수 없습니다가NSURL은 항상 전무

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 

전무 항상 passed..its 될 것입니다 나는 내가이 작업을 수행하는 데이터는 방법을 리드 할 수있는 경우 :

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

편집 :

내가 오류를 찾을 수 없습니다이 파일을 거기에서 나의 길을 고생 한 당신의 도움으로, 너희들 감사합니다, 하지만 파일이 내 g에 저장되는 것을 볼 수 있습니다. allery, 어떤 단서가 내 하루를 구할 것입니다. absoluteString를 사용

 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- of-true. –

+0

그래, 모든 것을 시도한 종류의 ... videoURL로만 진행되었지만 헛되이 갔다. –

+1

videoUrl은 코드에서 선택 사항이므로 배치하기 만하면됩니다. videoURL 끝! – Sanju

답변

1

는 처음에 file://를 포함하는 문자열을 반환하고 당신은 원하지 않는다. 당신은 URL 네이티브 대신 NSURLNSDataData 스위프트 3 사용에서 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

의 경로를 반환해야합니다.

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