मैं वर्तमान में अपने सर्वर पर एक फ़ाइल अपलोड करने के लिए FileUploader जावास्क्रिप्ट सुविधा का उपयोग Play2/स्काला के साथ निम्न का उपयोग कर रहा Play2/स्काला में स्मृति में MultipartFormData से पुलिंग:फ़ाइलों
def fileUploader = Action(parse.multipartFormData) { request =>
request.body.file("qqfile").map { picture =>
import java.io.File
val filename = picture.filename
val contentType = picture.contentType
picture.ref.moveTo(new File("/tmp",filename))
Ok(Json.toJson(Map("success" -> "true")))
}.getOrElse {
Ok(Json.toJson(Map("error" -> "error occured")))
}
}
मैं केवल के साथ काम कर रहा हूँ छोटी फाइलें (< 10 एमबी) और मैं मोंगो ड्राइवरों का उपयोग करके उन फ़ाइलों को सीधे मोंगो दस्तावेज़ या ग्रिडएफएस में लिखने के लिए कैस्बा का उपयोग करना चाहता हूं। मुझे एहसास है कि मैं डिस्क से सहेजी गई फाइल को पढ़ सकता हूं, लेकिन डिस्क पर फ़ाइल को बफर किए बिना स्मृति से इसे संभालने का कोई तरीका है?
प्ले प्रलेखन यहां एक कस्टम बॉडीपार्सर (http://www.playframework.com/documentation/2.1.0/ScalaFileUpload) लिखने की सिफारिश करता है लेकिन ऐसा कोई प्रलेखन प्रतीत नहीं होता है कि एक लिखने के बारे में कैसे जाना है। यह स्पष्ट नहीं था कि एपीआई/कार्यान्वयन स्कालडॉक्स से कैसे काम करता है। मैं MultiPartFormData स्रोत कोड की तलाश में देखने के लिए कि यह कैसे काम करने की कोशिश की, लेकिन मैं उनके Git रेपो में मिल नहीं कर पा रहे:
https://github.com/playframework/Play20/tree/master/framework/src/play/src/main/scala/play/api/mvc
मैं काफ़ी खोज की है, लेकिन नहीं कर पा रहे एक अच्छा उदाहरण खोजने के लिए।
'multipartFormData' शरीर पार्सर यहां पाया जा सकता: https://github.com/playframework/Play20/blob/2.1.0/framework/ src/खेल/src/मुख्य/स्केला/खेल/API/MVC/ContentTypes.scala # L541 – EECOLOR