通常、ビデオプレーヤーのプレローディング効果を完了することができませんインターフェース出力ファイルの内容は、このページ上のオーディオプレーヤーにアップロードとダウンロード、使用OutputStreamのストリームのHttpServletResponseオブジェクトによって調製したファイル、プリロード効果が、私はそれを打つ言葉であります実際の問題は、あなたがビデオやオーディオを再生するとき、これは問題のインタフェースを記述するためのバックグラウンドであるので、あなたは、遊び、不可解な悪い気分に指定された場所を達成することができない、プログレスバーをクリックしてください!
実際の結果:
実装コード:春のブートに基づいて実装コード
NonStaticResourceHttpRequestHandlerオブジェクト:まず、書き込み
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import javax.servlet.http.HttpServletRequest;
import java.nio.file.Path;
/**
* @author Mr.S
* @date 2020/3/10
*/
@Component
public class NonStaticResourceHttpRequestHandler extends ResourceHttpRequestHandler {
public final static String ATTR_FILE = "NON-STATIC-FILE";
@Override
protected Resource getResource(HttpServletRequest request) {
final Path filePath = (Path) request.getAttribute(ATTR_FILE);
return new FileSystemResource(filePath);
}
}
そして、通話に必要な、このインターフェイスのコードのように記述します。
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@RestController
public class PlayerController {
@Autowired
private NonStaticResourceHttpRequestHandler nonStaticResourceHttpRequestHandler;
@GetMapping("/getPlayResource/{resourceId}")
public void getPlayResource(@PathVariable("resourceId") Long resourceId,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
Resource resource = resourceService.getResource(resourceId);
if (resource != null) {
Path path = Paths.get(filePath + resource.getPath());
if (Files.exists(path)) {
String mimeType = Files.probeContentType(path);
if (!StringUtils.isEmpty(mimeType)) {
response.setContentType(mimeType);
}
request.setAttribute(NonStaticResourceHttpRequestHandler.ATTR_FILE, path);
nonStaticResourceHttpRequestHandler.handleRequest(request, response);
} else {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
}
}
}
}
いくつかは、それはインターフェースああ上にあると言います!
リソースオブジェクトのリソースオブジェクトは、私自身の定義、リソースオブジェクトに前に書かれていないNonStaticResourceHttpRequestHandle rとします
filePathに私は、ファイルのサーバールートのパスを指定するだけでなく、カスタムは、単にコピーしないでください!変更を加えることを忘れないでコピー!