परिणाम प्रकार play.api.mvc.Results
में हैं, here पर गिटहब पर देखें।
हेडर को जोड़ने के लिए, आप लिखते हैं:
Ok
.withHeaders(CONTENT_TYPE -> "application/octet-stream")
.withHeaders(CONTENT_DISPOSITION -> "attachment; filename=foo.txt")
या
Ok.withHeaders(
CONTENT_TYPE -> "application/octet-stream",
CONTENT_DISPOSITION -> "attachment; filename=foo.txt"
)
और यहाँ एक पूर्ण नमूना डाउनलोड है:
def download = Action {
import org.apache.commons.io.IOUtils
val input = Play.current.resourceAsStream("public/downloads/Image.png")
input.map { is =>
Ok(IOUtils.toByteArray(is))
.withHeaders(CONTENT_DISPOSITION -> "attachment; filename=foo.png")
}.getOrElse(NotFound("File not found!"))
}
एक फ़ाइल डाउनलोड करने के लिए, अब खेलें एक और आसान तरीका प्रदान करता है:
def download = Action {
Ok.sendFile(new java.io.File("public/downloads/Image1.png"), fileName = (name) => "foo.png")
}
नुकसान यह है कि फ़ाइल नहीं मिलने पर यह अपवाद में परिणाम देता है। साथ ही, फ़ाइल नाम एक फ़ंक्शन के माध्यम से निर्दिष्ट किया गया है, जो थोड़ा अधिक लगता है।
स्रोत
2011-11-20 11:46:09
'withHeaders' विधि को एकाधिक टुपल पैरामीटर के साथ एक बार बुलाया जा सकता है। – Rajish
धन्यवाद, मैंने तदनुसार पोस्ट संपादित किया है। –