Artikel ini menjelaskan metode pemrograman Java untuk mengimplementasikan dukungan sisi server untuk transmisi kontinu breakpoint. Bagikan untuk referensi Anda, sebagai berikut:
Semua orang tahu bahwa Tomcat Streams dapat mendukung transmisi kontinu breakpoint untuk sumber daya statis, tetapi jika itu adalah aliran yang dikendalikan, jika memiliki kontrol izin, atau jika alamat unduhan hanya proxy, Anda perlu menerapkan dukungan untuk transmisi kontinu breakpoint sendiriannya sendiri , Saya tidak berbakat, di sini kami memberikan implementasi sederhana dari transmisi kontinu breakpoint [a-,-b, ab], yang terbukti mendukung beberapa transmisi berkelanjutan guntur 7 dan firefox. Kode ini diposting, dan semua orang akan membagikannya bersama:
Servlet
impor java.io.bufferedoutputStream; import java.io.file; impor java.io.ioException; impor java.io.randomaccessfile; impor java.io.unsupport edencodingException; import java.net.uri; impor java.net.urisynception; Impor java.net.urldecoder; impor javax.servlet.servletException; impor javax.servlet.servletoutputStream; import javax.servlet.http.httpservlet. basis .baseservlet; import com.bsteel.cloud.storage.utils.fileutil;/** * unduhan file (mendukung transmisi kontinu breakpoint [guntur/ekspres/tornado/firefox/chrome]) * @author jdkleo * */kelas publik f ILEIOSERVLET memperluas BASESERVLET {private static final long serialversionuid = 1L; Letresponse tanggapan) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::: Param Request * @param Response * @Throws Unsupportedencodin GException */ Private Void Unduh (HTTPServletRequest Request, httpservletResponse respons log.info (lewati "+pos); ); )! = -1) {out.write (b, 0, n); , E);} akhirnya {if (out! = null) {coba {out.close (); null) {coba {raf.close (); getParameter ("URI"); (7); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : ::: {return file baru (URI baru (uristr)); Uri asli ");}}
Dukungan jangkauan
impor java.io.file; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletResponse;/*** Alat pemrosesan file* @Author jdkleo**/public class fileutil {/** dukungan * @param file * @param permintaan * @param response * @return berapa banyak byte untuk melewatkan */ headerSetting panjang statis public (file file, httpservletrequest permintaan, httpservletres ponse response) {long len = file.length (); // Panjang file if (null == request.getHeader ("range")) {setResponse (rangeSettings baru (len), file.getName (), respons); Replaceall ("Bytes =", ""); Pengaturan, nama file string, respons httpservletResponse) {response.addheader ("konten-disposisi", "lampiran; fileName =/" " + ioutil.toutf8string (filenam e) +"/""); nama file)); // atur tipe mime. settings.getStart (); String.ValueOf (ContentLength)); settings.gettotallength ()). Tostrin G (); end = 0; if (range.startswith (" -")) // -500, 500 terakhir {contentLength = long.parselong (range.substring (1)); // jumlah yang akan diunduh akhir = len -1 ; ; 1]);
Paket jangkauan
Kelas Publik {Private Long Start; {this.Start = Mulai; ) {return start; ) {return contentLength; () {rentang return;}}
IO Stream Kelas Alat Pemrosesan Terkait
impor java.io.inputStream; kelas publik ioutil {public string setContentType (string returnFileName) {string contentType = "Application/Octet -stream"; .tolowercase (); "shtml")) {contentType = "text/html"; {contentType = "Text/XML"; "jpg")) {contentType = "Image/JPEG"; )) {contentType = "Application/Atom+XML"; ) {contentType = "Text/Mathml"; /vnd.sun. )) {contentType = "Teks/Komponen X"; FileName.equals ("TIFF")) {contentType = "Image/Tiff"; Equals ("ICO")) {contentType = "Image/X-ICon"; "BMP")) {contentType = "Image/X-MS-BMP"; "Jar") ||. Tipe Konten = "Aplikasi/MSword"; /rtf ";} lain jika (returnFileName .equals (" xls ")) {contentType =" Application/vnd.ms-excel ";} lain jika (returnFileName.equals (" ppt ")) {contentType =" Application/VND .ms-po werpoint ";} lain jika (returnFileName.equals (" 7z ")) {contentType =" application/x-7z-compressed ";} lain jika (returnFileName.equals (" rar ")) {contentType =" Aplikasi/X-rar-compressed ";} lain jika (returnFileName.equals (" swf ")) {contentType =" Application/x-shockwave-flash ";} lain jika (returnFileName.equals (" rpm ")) { Tipe Konten = "Aplikasi/X-Redhat-Paket- Manager"; = "Applicati ON/X-X509-CA-CERT"; ) {cont enttype = "Application/Zip";} lain jika (returnFileName.Equals ("mid") || returnFileName.equals ("midi") || returnFileName.equals ("kar")) {contentType = "audio/ midi ";} lain jika (returnFileName.equals (" mp3 ")) {contentType =" audio/mpeg ";} lain jika (returnFileName.equals (" ogg ")) {contentType =" audio/ogg ";} lain jika (returnFileName.Equals ("M 4A")) {ContentType = "Audio/X-M4A"; returnFileName.Equals ("3GPP") ||. } lain jika (returnFileName.Equal s ("mpeg") || returnFileName .equals ("mpg")) {contentType = "video/mpeg"; Video/QuickTime ";} else if (retu rnfileName.equals (" flv ")) {contentType =" video/x-flv ";} lain jika (returnFileName.equals (" m4v ")) {contentType =" video/x -m4v ";} lain jika (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 transcoding public static string toutf8string (string s) {stringBuffer sb = new stringBuffer (); int len = s.tocharArray () .length; untuk (int i = 0; i <len; i ++) {char c = s.charat (i); else {byte [] b; ; ) .tupercase ()); Skiply (InputStream In, Long Howmany) Melemparkan ex ception {long tetap = Howmany;
Perhatikan beberapa kategori seperti metode IOUTIL berasal dari ringkasan netizen CSDN.
Saya harap artikel ini akan membantu pemrograman Java semua orang.