복붙노트

[SCALA] 어떻게 플레이에 업로드 된 파일을 제공합니다! 2 스칼라를 사용하고 계십니까?

SCALA

어떻게 플레이에 업로드 된 파일을 제공합니다! 2 스칼라를 사용하고 계십니까?

나는 사용자가 서버에 사진을 업로드 한 다음을 볼 수 있도록 노력하고있어. 이 가이드의 설명에 따라 업로드가 발생합니다. 여기에 코드입니다 :

def upload = Action(parse.multipartFormData) { request =>
  request.body.file("picture").map { picture =>
    import java.io.File
    val filename = picture.filename 
    val contentType = picture.contentType
    picture.ref.moveTo(new File("/tmp/picture"))
    Ok("File uploaded")
  }.getOrElse {
    Redirect(routes.Application.index).flashing(
      "error" -> "Missing file"
    )
  }
}

업로드 된 이미지를보고 싶은 사용자에게 다시 제공하는 방법을 나에게 명확하지 않다. 드라이브, 인터넷에서 사용할 수 없습니다 (이 아니어야합니다) : 가이드의 코드 내 D에 파일을 기록, 그래서 지금은 내 자신의 컴퓨터에 서버를 호스팅하고 있습니다. 최대한 멀리 볼 수있는 두 가지 옵션이 있습니다 :

1의 경우, 그 자산의 목적입니다 있는지 확실하지 않습니다. 2, 나는 어떻게 이런 컨트롤러를 작성하는 아무 생각이 없습니다.

해결법

  1. ==============================

    1.2.0.3 (MIS)은 이것을 위해 사용될 수있는 외부 자산 컨트롤러 기능을한다. 이러한 컨트롤러를 작성하면 업로드 한 모든 동영상을 저장할 폴더를 미리 정의했다,하지만 마법 없다, 당신은에서 읽을의 그. 데이터베이스에서 당신은 (독특한) 파일 이름을 저장합니다.

    2.0.3 (MIS)은 이것을 위해 사용될 수있는 외부 자산 컨트롤러 기능을한다. 이러한 컨트롤러를 작성하면 업로드 한 모든 동영상을 저장할 폴더를 미리 정의했다,하지만 마법 없다, 당신은에서 읽을의 그. 데이터베이스에서 당신은 (독특한) 파일 이름을 저장합니다.

    다른 방법은 데이터베이스에 업로드 된 파일을 저장하는 것입니다. 우리는 MongoDB의에서 GridFS이 작업을 수행. 사용자 정의 컨트롤러는 사용자에게 다시 제공합니다. 데이터는 백업 및 복구 간단하게 하나 개의 중앙 위치에 저장됩니다 이런 식으로.

  2. ==============================

    2.간단한 예는

    간단한 예는

    def index = Action {
      Ok.sendFile(new java.io.File("/tmp/fileToServe.pdf"))
    }
    

    파일을 제공하는 방법에 대해 설명합니다 https://www.playframework.com/documentation/2.4.x/ScalaStream#Serving-files에서 "파일 봉사"섹션이있다

  3. ==============================

    3.이 같은 새로운 경로를 추가 할 수 있습니다 :

    이 같은 새로운 경로를 추가 할 수 있습니다 :

    GET     /myFiles/*file               controllers.Assets.at(path="/tmp", file)
    
  4. from https://stackoverflow.com/questions/11451246/how-to-serve-uploaded-files-in-play2-using-scala by cc-by-sa and MIT license