Support audio mime (#574)

This commit is contained in:
Joost Timmerman 2022-01-17 14:24:50 +01:00 committed by GitHub
parent 721410c7d0
commit ee56cfe2b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 11 deletions

View File

@ -5,7 +5,8 @@ import org.apache.commons.compress.utils.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.zip.ZipEntry;
@ -26,11 +27,13 @@ public class MimeTypeUtil {
* @throws IOException e
*/
public static String guessMimeType(Path file, String name) throws IOException {
String mimeType;
try (InputStream is = Files.newInputStream(file)) {
byte[] headerBytes = new byte[64];
is.read(headerBytes);
mimeType = guessMimeType(headerBytes, name);
String mimeType = URLConnection.getFileNameMap().getContentTypeFor(name);
if (mimeType == null) {
try (InputStream is = Files.newInputStream(file)) {
final byte[] headerBytes = new byte[64];
is.read(headerBytes);
mimeType = guessMimeType(headerBytes, name);
}
}
return guessOpenDocumentFormat(mimeType, file);
@ -42,10 +45,9 @@ public class MimeTypeUtil {
* @param headerBytes File header (first bytes)
* @param name File name
* @return MIME type
* @throws UnsupportedEncodingException e
*/
public static String guessMimeType(byte[] headerBytes, String name) throws UnsupportedEncodingException {
String header = new String(headerBytes, "US-ASCII");
public static String guessMimeType(byte[] headerBytes, String name) {
String header = new String(headerBytes, StandardCharsets.US_ASCII);
// Detect by header bytes
if (header.startsWith("PK")) {

View File

@ -41,8 +41,8 @@
img-error="error = true"
ng-show="!error && canDisplayPreview()" />
<!-- Video player -->
<a href class="video-overlay" ng-if="!error && file.mimetype.substring(0, 6) == 'video/'"
<!-- Media player -->
<a href class="video-overlay" ng-if="!error && (file.mimetype.substring(0, 6) == 'video/' || file.mimetype.substring(0, 6) == 'audio/')"
ng-init="videoPlayer = false" ng-click="videoPlayer = true">
<span class="fas fa-play-circle" ng-if="!videoPlayer"></span>
<video ng-if="videoPlayer" autoplay="autoplay" loop="loop"