Tôi đang cố gắng cho phép người dùng tải ảnh lên máy chủ và sau đó xem chúng. Việc tải lên diễn ra như được mô tả in this guide. Đây là mã:Làm cách nào để phân phối các tệp đã tải lên trong Play! 2 bằng Scala?
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"
)
}
}
Tôi không rõ làm cách nào để phân phát ảnh đã tải lên cho người dùng muốn xem chúng. Ngay bây giờ tôi đang lưu trữ máy chủ trên máy tính của riêng tôi, vì vậy đoạn mã từ hướng dẫn ghi các tệp vào ổ D của tôi, không phải (và không nên) có sẵn từ Internet. Theo như tôi có thể thấy có 2 tùy chọn:
Lưu trữ ảnh trong thư mục/công khai trong dự án của tôi (dự án dành riêng cho tài sản). Xem tại đây: http://www.playframework.org/documentation/2.0/Assets
Viết trình điều khiển của riêng tôi phục vụ hình ảnh tạo thành vị trí tùy chỉnh từ ổ đĩa của tôi.
Đối với 1, tôi không chắc đó có phải là mục đích của nội dung hay không. Đối với 2, tôi không có ý tưởng làm thế nào để viết một bộ điều khiển như vậy.
Thú vị . Đó là sự hiểu biết của tôi tuy nhiên, lưu trữ các tập tin ngay vào cơ sở dữ liệu có thể là thực hành xấu, sau câu hỏi này: http://stackoverflow.com/questions/11416735/how-to-upload-a-file-to-the-database- sử dụng-playframework-in-scala –
Như mọi khi, nó phụ thuộc. GridFS được tạo ra một cách rõ ràng cho loại vấn đề này, cũng giống như Amazon S3. Nếu bạn lưu trữ các tập tin của bạn trong hệ thống tập tin địa phương, bạn có một vấn đề lớn khi bạn cần một máy chủ thứ hai một ngày. Hãy nhìn vào bộ điều khiển tài sản, không phải là khó hiểu. –
Bạn cũng có thể sử dụng NAS để chia sẻ lưu trữ giữa các máy chủ và gắn nó vào đúng nơi. Bạn cũng có thể tải tệp của mình lên CDN và để tệp đó phân phối tệp của bạn. Đi với MongoDB chỉ để lưu trữ tập tin không phải là lựa chọn tốt hơn tôi nghĩ. – iwalktheline