दिलचस्प पोस्ट
उद्देश्य सी HTML एस्केप / अनसेस्पेप स्वचालित HTTPS कनेक्शन / नोड.जेएस / एक्सप्रेस के साथ रीडायरेक्ट जीएल पुस्तकालय / हेडर कैसे प्राप्त करें? एसएमएस मैनेजर मल्टिप्पर्ट संदेश भेजें जब 160 वर्णों से कम हो स्टैंड-अलोन जावा कोड फॉर्मेटर / इलफ़िफ़ॉर्मर / सुंदर प्रिंटर? Google मानचित्र रिलीज एपीआई कुंजी उत्पन्न करना बाश में बहु-आयामी सरणियां पायथन: जब मेरी सूची में वास्तव में परिवर्तन नहीं होता है तो मेरी सूची क्यों बदलती है? <स्क्रिप्ट प्रकार = "टेक्स्ट / टेम्पलेट"> … </ script> का स्पष्टीकरण नोडजे कॉलबैक सरल उदाहरण कैसे एक भाषा (अजगर) में कोई मान मौजूद है या नहीं रीसाइक्लर आइटम का विस्तार / संक्षिप्त करें देखें फ्लेक्स 3 – HTTP प्रमाणीकरण URLRequest का समर्थन कैसे करें? ObservableCollection AddRange विधि का समर्थन नहीं करता है, इसलिए मुझे प्रत्येक आइटम के लिए अधिसूचित किया गया, इसके अलावा INotifyCollectionChanging के बारे में क्या? jQuery 'इनपुट' घटना

जावा सबलेट पर एचटीएमएल 5 फाइल अपलोड करें

मेरे सवाल का यह सब कहते हैं मैं फिलहाल अपलोडिफ़ (फ्लैश + अजाक्स) का इस्तेमाल कर रहा हूँ, सफलता के साथ सर्विसलेट (कॉमन्स अपलोड w / OWASP ईएसएपीआई ओवरले) का उपयोग कर रहा हूं, लेकिन मैं सोच रहा था कि मैं एचटीएमएल 5 समर्थन में, या फिर फ्लैश समर्थन के साथ एचटीएमएल 5 के निर्माण के बारे में कैसे जाना होगा।

मुझे पता है कि एचटीएमएल 5 डीएनडी कैसे काम करना है, लेकिन मैं जावा सर्विस कनेक्शन और / या बैकएण्ड के मैकेनिक को काफी समझ नहीं सकता। मैंने बहुत से स्थानों की खोज की है, लेकिन मुझे कोई जवाब नहीं मिल पाया है, इसलिए किसी भी मदद की सराहना की है।

वेब के समाधान से एकत्रित समाधान "जावा सबलेट पर एचटीएमएल 5 फाइल अपलोड करें"

मुझे पता है कि एचटीएमएल 5 डीएनडी कैसे काम करना है, लेकिन मैं जावा सर्विस कनेक्शन और / या बैकएण्ड के मैकेनिक को काफी समझ नहीं सकता।

नियमित रूप से <form enctype="multipart/form-data"> का उपयोग करते समय यह अलग नहीं है आपको केवल उस HTML5 / जेएस कोड को multipart/form-data फाइल के साथ multipart/form-data अनुरोध भेजने की ज़रूरत है, ठीक उसी प्रकार का अनुरोध क्योंकि यह नियमित रूप से <input type="file"> साथ भेजा गया होता है। खेत। मुझे लगता है कि आप समझ सकते हैं कि एचटीएमएल 5 / जेएस के साथ वास्तव में कैसे हासिल किया जाए।

आप इस के लिए नए एचटीएमएल 5 File एपीआई, एक्सएचआर 2 FormData और XMLHttpRequestUpload API का उपयोग कर सकते हैं।

यहां बताया गया है कि आपके drop इवेंट हैंडलर को कैसा दिखना चाहिए:

 function dropUpload(event) { event.stopPropagation(); event.preventDefault(); var formData = new FormData(); formData.append("file", event.dataTransfer.files[0]); var xhr = new XMLHttpRequest(); xhr.open("POST", "uploadServlet"); xhr.send(formData); } 

बस। यह उदाहरण मानता है कि सर्वलेट /uploadServlet यूआरएल पैटर्न पर मैप किया गया है। इस उदाहरण में, फ़ाइल तब अपाचे कॉमन्स फाइल में उपलब्ध है फाइल की एक फ़ील्ड नाम के साथ FileItem उदाहरण के रूप में सामान्य तरीके से file


प्रगति की निगरानी के लिए इवेंट हैंडलर्स को संलग्न करने और पसंद करने के लिए, उन्नत ब्लॉगों के लिए निम्नलिखित ब्लॉगों की जांच करें:

  • HTML5 खींचें और ड्रॉप अपलोड और फ़ाइल एपीआई ट्यूटोरियल
  • प्रगति के साथ एचटीएमएल 5 फाइल अपलोड

मैंने इसके आस-पास कुछ हद तक निम्न SSCCE के साथ खेला है:

 <!DOCTYPE html> <html lang="en"> <head> <title>HTML5 drag'n'drop file upload with Servlet</title> <script> window.onload = function() { var dropbox = document.getElementById("dropbox"); dropbox.addEventListener("dragenter", noop, false); dropbox.addEventListener("dragexit", noop, false); dropbox.addEventListener("dragover", noop, false); dropbox.addEventListener("drop", dropUpload, false); } function noop(event) { event.stopPropagation(); event.preventDefault(); } function dropUpload(event) { noop(event); var files = event.dataTransfer.files; for (var i = 0; i < files.length; i++) { upload(files[i]); } } function upload(file) { document.getElementById("status").innerHTML = "Uploading " + file.name; var formData = new FormData(); formData.append("file", file); var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", uploadProgress, false); xhr.addEventListener("load", uploadComplete, false); xhr.open("POST", "uploadServlet", true); // If async=false, then you'll miss progress bar support. xhr.send(formData); } function uploadProgress(event) { // Note: doesn't work with async=false. var progress = Math.round(event.loaded / event.total * 100); document.getElementById("status").innerHTML = "Progress " + progress + "%"; } function uploadComplete(event) { document.getElementById("status").innerHTML = event.target.responseText; } </script> <style> #dropbox { width: 300px; height: 200px; border: 1px solid gray; border-radius: 5px; padding: 5px; color: gray; } </style> </head> <body> <div id="dropbox">Drag and drop a file here...</div> <div id="status"></div> </body> </html> 

और यह UploadServlet नए सर्विस 3.0 का उपयोग कर रहा है। HttpServletRequest#getPart() एपीआई:

 @MultipartConfig @WebServlet("/uploadServlet") public class UploadServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part file = request.getPart("file"); String filename = getFilename(file); InputStream filecontent = file.getInputStream(); // ... Do your file saving job here. response.setContentType("text/plain"); response.setCharacterEncoding("UTF-8"); response.getWriter().write("File " + filename + " successfully uploaded"); } private static String getFilename(Part part) { for (String cd : part.getHeader("content-disposition").split(";")) { if (cd.trim().startsWith("filename")) { String filename = cd.substring(cd.indexOf('=') + 1).trim().replace("\"", ""); return filename.substring(filename.lastIndexOf('/') + 1).substring(filename.lastIndexOf('\\') + 1); // MSIE fix. } } return null; } } 

यह भी देखें:

  • JSP / Servlet का उपयोग करके सर्वर पर फाइल कैसे अपलोड करें?