تصف هذه المقالة طريقة برمجة Java لتنفيذ دعم من جانب الخادم لنقل الإرسال المستمر. شاركه للرجوع إليه ، على النحو التالي:
يعلم الجميع أن تدفقات Tomcat يمكن أن تدعم الإرسال المستمر نقطة التوقف للموارد الثابتة ، ولكن إذا كان دفقًا محكمًا ، أو إذا كان لديه التحكم في الإذن ، أو إذا كان عنوان التنزيل مجرد وكيل ، فأنت بحاجة إلى تنفيذ دعم النقل المستمر نقطة التوقف بنفسك . تم نشر الرمز ، وسيشاركه الجميع معًا:
servlet
استيراد java.io.bufferedOutputStream ؛ import java.io استيراد java.net.urldecoder ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.servletutputstream ؛ استيراد javax.servlet.http.httpservletrequest ؛ base .BaseServlet ؛ import com.bsteel.cloud.storage.utils.fileutil ؛/** * تنزيل الملف (يدعم نقطة الإيقاف المستمر [Thunder/Express/Tornado/Firefox/Chrome]) * Author Jdkleo * */Public Class F ileIoServlet extends BaseServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) thro ws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse إجابة) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : ::::::::::::::::::::::::: :::::::::::::::::::::: ::::::::::::::::::::: :::::: رمي servletexception ، ioexception {download (request ، response) ؛ Param request * param response * throws Unsupportedencodin Gexception */ private void download (httpservletrequest request ، httpservletresponse) يلقي unsupportedencodexception {file downloadfile = getFile (request) ؛ log.info ("Skip" POS) ؛ ) ؛ )! = -1) {out.write (b ، 0 ، n) ؛ ، e) ؛ null) {try {raf.close () ؛ GetParameter ("uri") ؛ (7) ؛ ::::::::::::::::::::::::: :::::::::::::::::::::: ::::::::::::::::::::::::: :::::::::::::::::::::: :::: {إرجاع ملف جديد (uri (uristr)) ؛ URI حقيقي ") ؛}}
دعم المدى
استيراد java.io.file ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletrespons دعم * param file * @param request * param response * regurn كم عدد البايتات لتخطي */ public static headersting (ملف الملف ، طلب httpservletrequest ، httpservletres ponse response) {long len = file.length () ؛ // طول الملف (null == request.getheader ("المدى") . الإعدادات ، اسم ملف السلسلة ، استجابة httpservletsponse) {response.addheader ("محتوى disposition" ، "المرفق ؛ اسم الملف)) ؛ // اضبط نوع MIME. Settings.getStart () string.valueof (contentLength)) ؛ Settings.GetTallength (). Tostrin G () ؛ End = 0 ؛ ؛ ؛ 1]) ؛
حزمة المدى
راتبيون من الطبقة العامة {بداية طويلة ؛ {this.start = int ) {return start ؛ ) {Return ContentLength ؛ () {Return Range ؛
فئة أداة المعالجة ذات الصلة دفق IO
استيراد java.io.inputStream ؛ فئة عامة ioutil {setcontenttype public {Application/actet -stream "؛ .Tolowercase () ؛ "shtml") {contentType = "text/html" ؛ {contentType = "text/xml" ؛ "JPG") {contentType = "Image/JPEG" ؛ )) {contentType = "Application/Atom+XML" ؛ ) {contentType = "Text/Mathml" ؛ /vnd.sun. ) {contentType = "text/x-component" ؛ filename.equals ("tiff") {contentType = "Image/tiff" ؛ يساوي ("ICO") {contentType = "Image/X-icon" ؛ "BMP") {contentType = "Image/X-MS-BMP" ؛ "جرة") ||. نوع المحتوى = "التطبيق/msword" ؛ /rtf "؛} آخر إذا (returnfilename .equals (" XLS ")) {contentType =" Application/vnd.ms-excel "؛ .ms-po werpoint "؛} آخر إذا (returnfilename.equals (" 7z ")) {contentType =" Application/X-7Z-cumpressed "؛} آخر إذا (returnfilename.equals (" rar ")) {contentType =" appli ada cation/x-rar مضغوط "؛} آخر إذا (returnfilename.equals (" swf ")) {contentType =" application/x-shockwave-flash "؛} آخر إذا (returnfilename.equals (" rpm ")) { نوع المحتوى = "Application/X-Redhat-Package- Manager" ؛ = "Applicati ON/X-X509-CA-CERT" ؛ ) {cont enttype = "application/zip" ؛ MIDI "؛} آخر إذا (returnfilename.equals (" mp3 ")) {contentType =" Audio/MPEG "؛} آخر إذا (returnfilename.equals (" ogg ")) (ReturnFilename.equals ("M 4A") {contentType = "Audio/X-M4a" ؛ returnfilename.equals ("3GPP") ||. } if (returnfilename.equal s ("mpeg") || returnfilename .equals ("mpg") {contentType = "video/mpeg" ؛ فيديو/QuickTime "؛} آخر إذا (retu rnfilename.equals (" flv ")) {contentType =" video/x-flv "؛ -M4V "؛} آخر إذا (returnfilename.equals ls (" mng ")) {contentType =" video/x-mng "؛} آخر إذا (returnfilename.equals (" asx ") || returnfilename.equals (" asf " ) {contentType = "video/x-ms-asf" ؛ avi ")) {contentType =" video/x-msv ideo "؛ (). الطول ؛ آخر {byte [] b ؛ ؛ ) .TouperCase () ؛ skiply (inportstream in ، howmany) ex ception {longning = howmany ؛
ملاحظة بعض الفئات مثل طريقة IOUTIL تأتي من ملخص مستخدمي الإنترنت CSDN.
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.