当http请求头中包含 Accept-Ranges: bytes 时,若响应头为HTTP/1.1 206 Partial Content则代表该资源支持切片下载。只需要在请求头中加入
Range: bytes=start-end
服务端就会响应给定的范围内的资源。
HTTP Range文件下载示例:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import com.jfinal.plugin.ehcache.CacheKit;
import com.sdzn.iload.model.FileBean;
import com.sdzn.iload.model.ResultEnum;
public class HttpClient {
private static final Logger log = Logger.getLogger(HttpClient.class);
private static RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000).build();
/**
* 获取文件下载信息
*
* @param fb
*/
public static void getFileOption(FileBean fb) {
HttpGet httpget = new HttpGet(fb.getFileUrl());
httpget.setConfig(requestConfig);
CloseableHttpResponse response = null;
CloseableHttpClient httpclient = null;
try {
httpclient = HttpClients.createDefault();
response = httpclient.execute(httpget);
if (response.getStatusLine().getStatusCode() == 200)