2017-01-29 5 views
1
  1. 서버 쪽 신속하게 파일을 다운로드하려면 어떻게해야합니까?

나는이 시도 :Vapor server side swift를 사용하여 파일을 다운로드하고 파일을 보내려면 어떻게합니까?

let result = try drop.client.get("http://dropcanvas.com/ir4ok/1") 

하지만 result.body 항상 = 0 요소는

  • 가 어떻게 사진을 보내려면 어떻게합니까
      ?

    나는이

    drop.get("theFile") { request in 
        let file = NSData(contentsOf: "/Users/bob.zip") 
        return file // This fails here 
    } 
    
  • +0

    증기 도움말에 대한 슬랙 채널에 참여하려고 시도하십시오. – muescha

    +0

    'result.body'은 (는) 올바른 속성입니까? 여기 그들은'data'를 사용합니다. http://stackoverflow.com/questions/41868625/vapor-client-get-transform-and-return-json – muescha

    답변

    2
    1. 이 파일을 다운로드 시도했습니다.

    은 현재 올바른 궤도에 있지만, 파일 서비스가 302 리디렉션이 아니라 파일 자체를 반환하기 때문에 result.body은 항상 비어있는 이유입니다. 이 리디렉션을 따라야합니다. 여기에 작동 만 사용 사례와 관련된 간단한 구현입니다 :

    var url: String = "http://dropcanvas.com/ir4ok/1" 
        var result: Response! 
        while true { 
        result = try drop.client.get(url) 
        guard result.status == .found else { break } 
        url = result.headers["Location"]! 
        } 
        let body = result.body 
    
    1. 는 파일을 전송합니다.

    가장 좋은 방법은 당신의 증기 응용 프로그램의 Public 디렉토리에 파일을 저장하고, 직접 클라이언트 요청 공용 URL이, 또는 당신의 자신의 포인팅의 302 응답을 반환하거나.

    파일의 영구적 인 거주지를 명시 적으로 숨기려면 다음과 같이하십시오. 인증을 수행하면 Vapor 자신의 FileMiddleware을 지침으로 사용하여 자신의 경로에서 파일을 반환 할 수 있습니다.