In diesem Artikel wird die Java-Programmiermethode beschrieben, um die Server-Seiten-Unterstützung für die kontinuierliche Übertragung von Haltepunkten zu implementieren. Teilen Sie es für Ihre Referenz wie folgt weiter:
Jeder weiß, dass Tomcat -Streams die Breakpoint -kontinuierliche Übertragung für statische Ressourcen unterstützen können. Wenn es sich jedoch um einen kontrollierten Stream handelt, wenn es sich . Der Code wird veröffentlicht und jeder wird ihn gemeinsam teilen:
Servlet
Importieren Sie java.io.buffeedOutputStream; Import Java.io.file; Import java.io.ioxception; import Java.io.randomaccessfile; import Java.io.unsupport edencodingException; import Java.net.uri; Import Java.Net.urisyntaxException; importieren java.net.urdecoder; import javax.servlet.servletException; import javax.servlet.servletoutputstream; import Javax.Servlet.http.httpserdServletrequest; Basis .BaseServlet; importieren com.bsteel.cloud.storage.utils.fileutil;/** * Datei -Download (unterstützt Breakpoint Continuous Getriebe [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 Antwort) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : :::::::::::::::::::::::::::::::::::: DISTException, IOException {Download (Anfrage, Antwort); Paramanfrage * @param Antwort * @Throws UnsupportedenCodin Gexception */ private void download (httpServletRequest -Anforderung, HttpServletResponse -Antwort) löst nicht unterstütztemodingException aus {Datei downloadFile = getFile (Anfrage); log.info ("Skip"+pos); ); ))! = -1) {out.write (b, 0, n);} out.flush (); , e);} endlich {if (out! null) {try {raf.close (); getParameter ("uri"); (7); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::: {Neue Datei zurückgeben (neue URI (Uristr)); ein echter Uri ");}}
Reichweite
Importieren Sie java.io.file; import Javax.servlet.http.httpServletRequest; importieren javax.servlet.htttp.httpServletResponse;/*** Dateiverarbeitungstool* @Author Jdkleo*/öffentliche Klassendatei {/*** Beilspunkte Continuation Pass Pass Support * @Param -Datei * @param Anfrage * @param Antwort * @return Wie viele Bytes überspringen */ public static Long Headeretting (Dateidatei, httpServletRequest -Anforderung, httpServletres ponse antwort) {long len = Datei.Length (); // Dateilänge if (null == request.getheader ("Bereich") {setResponse (neue BereicheSettings (Len), Datei.getName (), Antwort); . Einstellungen, String-Dateiname, httpServletResponse-Antwort) {response.addHeader ("Inhaltsdisposition", "Anhang; Dateiname =/" " + ioutil.toutf8string (Filenam e) +"/""); Dateiname); // Setzen Sie den MIME-Typ. Einstellungen.Getart (); String.ValueOf (contentLength)); Einstellungen Ende = 0; ; start = len -contentLength; ; 1]);
Bereichspaket
öffentliche Klassenstoffe {this.start = start; ) {Return Start; ) {return contentLength; () {Return Range;
IO -Stream -verwandte Verarbeitungswerkzeugklasse
Java.io.inputStream; public class ioutil {public static String setContentType (String returnFileName) {String ContentType = "Anwendung/Oktett -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"; Equals ("ICO") {contentType = "Image/X-ICON"; "bmp") {contentType = "Image/x-ms-bmp"; "Jar") ||. Content type = "application/msword"; /rtf ";} else if (returnFileName .equals (" xls ") {contentType =" application/vnd.ms-excel ";} else if (returnFileName.equals (" ppt ") {contentType =" application/vnd .ms-po werpoint ";} else if (returnFileName.equals (" 7z ") {contentType =" application/x-7z-komprimiert ";} else if (returnFileName.equals (" rar ") {contentType =" application/x-rar-komprimiert ";} else if (returnFileName.equals (" SWF ") {contentType =" application/x-shockwave-flash ";} else if (returnFileName.equals (" rpm ") { Content type = "Anwendung/X-RedHat-Package-Manager"; = "Applicati on/X-X509-Ca-Cert"; ) {cont enttype = "application/zip"; midi ";} else if (returnFileName.equals (" mp3 ") {contentType =" audio/mpeg ";} else if (returnFileName.equals (" ogg ") {contentType =" audio/ogg ";} else wenn (returnFileName.equals ("m 4a") {contentType = "audio/x-m4a"; returnFileName.equals ("3GPP") ||. } else if (returnFileName.equal s ("mpeg") || returnFileName .equals ("mpg") {contentType = "Video/mpeg"; Video/QuickTime ";} else if (retU rnFileName.equals (" flv ") {contentType =" Video/x-flv ";} else if (returnFileName.equals (" m4v ") {contentType =" Video/x -m4v ";} else if (returnFileName.equals ls (" mng ") {contentType =" Video/x-mng ";} else if (returnFileName.equals (" Asx ") || returnFileName.equals (" Asf " ) {contentType = "Video/x-ms-Asf"; avi ")) {contentType =" Video/x-msv ideo ";} return contentType;} // Utf8 Transcodieren public static String toutf8string (String) {StringBuffer SB = new StringBuffer (); int len = S.totarArray () .Length; sonst {byte [] b; ;} für (int j = 0; j <B.Length; ). SPIPFORY (InputStream In, Long Howmany) wirft eine Ex -CPPTION (Long Remeing = Howmany) aus;
Hinweis: Einige Kategorien wie die IOUTIL-Methode stammen aus der Zusammenfassung der CSDN-Internetnutzer.
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.