2012-07-19 12 views
6

ग्राहक के अनुरोध के एक फ़ाइल के लिए, मैं इस कोड भेजने के लिए उपयोग करते हैं:डाउनलोड करने के लिए ब्राउज़र में फ़ाइल कैसे भेजें?

public static Result download(String file) { 
    File file = getRealFile(file); 
    return Ok(file); 
} 

लेकिन मैं ब्राउज़र इसे डाउनलोड नहीं है, लेकिन बजाय अपनी सामग्री को प्रदर्शित पाया। प्रतिक्रिया शीर्षलेख:

Content-Type text/plain 
Transfer-Encoding chunked 

फ़ाइल भेजने का सही तरीका क्या है?


अद्यतन

प्रति Razvi का जवाब, मैंने पाया एक जवाब इस प्रश्न के लिए अच्छा लगता है: https://stackoverflow.com/a/1074925/342235

लेकिन हम वास्तव में इतने सारे हेडर स्थापित करने के लिए है?

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$filepath"); 
header("Content-Type: mime/type"); 
header("Content-Transfer-Encoding: binary"); 
// UPDATE: Add the below line to show file size during download. 
header('Content-Length: ' . filesize($filepath)); 

उत्तर

8

आपको सामग्री-वितरण शीर्षलेख सेट करने की आवश्यकता है। मेरा मानना ​​है कि हेडर का मान attachment होना चाहिए। इसके लिए Manipulating the response दस्तावेज़ देखें।

खेलने 2.0 निम्न कार्य के लिए स्पष्ट रूप से शीर्ष लेख की स्थापना के बिना:

ok(new FileInputStream(file))

+0

मैंने सोचा था कि play2 था यह करने के लिए कुछ सुविधाजनक तरीका, अशुभ :) – Freewind

+0

मैं एक और तरीका यह करने के लिए मिल गया है, नहीं है स्पष्ट रूप से हेडर सेट करने की आवश्यकता है। :) – Razvi

+0

'रेंडरबाइनरी' सिर्फ play1 के लिए है :( – Freewind

संबंधित मुद्दे