मैं एक वेबसाइट बनाने के लिए playframework का उपयोग कर रहा हूँ। और मैं xheditor नामक एक समृद्ध संपादक का भी उपयोग करता हूं।फ़ाइल विभिन्न प्रारूपों के साथ playframework में अपलोड करें
Xheditor AJAX-fileuploading का समर्थन करता है, इसके लिए सर्वर पक्ष की एक क्रिया होती है जो "दायरता" पैरामीटर स्वीकार करता है जिसमें अपलोड फ़ाइल होती है।
public class Application extends Controller {
public static void upload(File filedata) {
// the filedata should not be null
renderText("{'err':'', 'msg':{'ur':'/uploaded/xxx.zip'}}");
}
}
यह IE6 में ठीक काम करता है, filedata रिक्त नहीं है और सही डेटा शामिल हैं:
तो मैं एक अपलोड कार्रवाई लिखा था। लेकिन, अगर मैं क्रोम या फ़ायरफ़ॉक्स का उपयोग करता हूं, तो दायरता शून्य है !!
मैं क्या फ़ायरबग प्रस्तुत नजर रखने के लिए फ़ायरबग का उपयोग, और यह इस तरह के एक शीर्ष लेख प्रस्तुत पाया:
content-disposition
attachment; name="filedata"; filename="051111twdns.zip"
मुझे लगता है कि खेलने के लिए सही ढंग से इस मामले को संभाल नहीं किया है, इसलिए पैरामीटर "filedata" रिक्त है।
public class Application extends Controller {
public static void upload(File filedata) {
if(filedata!=null) {
// ok, it's IE6
renderText("{'err':'', 'msg':{'ur':'/uploaded/xxx.zip'}}");
} else {
// it's chrome or firefox, the data is in request.body
File targetFile = new File("upload/test.zip");
IOUtils.copy(request.body, new FileOutputStream(targetFile));
}
}
}
यह अब IE6, क्रोम और फ़ायरफ़ॉक्स में काम किया है, लेकिन , सिर्फ तभी अपलोड फ़ाइल बहुत छोटा है:
आदेश क्रोम और फ़ायरफ़ॉक्स के साथ काम करने के लिए, मुझे लगता है कि कार्रवाई को संशोधित किया। जैसे 4K से कम यदि यह थोड़ा बड़ा है, उदा। 12K, विधि "IOUtils.copy" रिपोर्ट करेंगे "त्रुटि पढ़ें!", यहां तक कि निम्न कोड ऐसी त्रुटि रिपोर्ट करेंगे:
request.body.available()
request.body.read()
request.body.read(bytes)