secuencia de vídeo de primavera de arranque y otro de audio (efecto de precarga) Interfaz

Archivo, normalmente preparado por la carga y descarga, uso OutputStream objeto de secuencia HttpServletResponse al contenido del archivo de salida de la interfaz no es capaz de completar el efecto de pre-carga del reproductor de vídeo, reproductor de audio en esta página, el efecto de la precarga es una palabra que le di, la pregunta real es: al reproducir un vídeo o audio, se hace clic en la barra de progreso, no puede alcanzar la ubicación especificada a juego, de mal humor inexplicable, porque este es el fondo para escribir la interfaz en cuestión!

Los resultados reales:

La implementación del código: el código de implementación basado en la primavera de arranque

En primer lugar, escribir: Objeto 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);
    }
}

A continuación, escribir como el código de interfaz cuando sea necesario a la llamada:

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());
            }
        }
    }
}

Algunos dicen que está por encima de la interfaz Oh!

objeto de recurso de objeto del recurso es mi propia definición, r NonStaticResourceHttpRequestHandle no escrito antes en el Objeto de recursos

rutaArchivo se especifica la ruta raíz del servidor para el archivo, así como la costumbre, por favor, no se limite a copiar! Copiados recordar a los cambios de maquillaje!

 

Publicados 100 artículos originales · elogios ganado 30 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/assiduous_me/article/details/104806530
Recomendado
Clasificación