Force application/x-directory for directories

Paths created by Files.createParentDirs lack extended attributes and
thus Content-Type for directories.
This commit is contained in:
Andrew Gaul 2021-02-02 22:56:51 +09:00 committed by Andrew Gaul
parent dabc0ab6a9
commit 56ad552344
1 changed files with 8 additions and 4 deletions

View File

@ -368,6 +368,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
builder.name(key);
File file = getFileForBlobKey(container, key);
ByteSource byteSource;
boolean isDirectory = false;
if (getDirectoryBlobSuffix(key) != null) {
if (!file.isDirectory()) {
@ -379,6 +380,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
}
logger.debug("%s - %s is a directory", container, key);
byteSource = ByteSource.empty();
isDirectory = true;
} else {
byteSource = Files.asByteSource(file);
}
@ -387,7 +389,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
String contentDisposition = null;
String contentEncoding = null;
String contentLanguage = null;
String contentType = null;
String contentType = isDirectory ? "application/x-directory" : null;
HashCode hashCode = null;
String eTag = null;
Date expires = null;
@ -403,9 +405,11 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
contentDisposition = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_DISPOSITION);
contentEncoding = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_ENCODING);
contentLanguage = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_LANGUAGE);
contentType = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_TYPE);
if (contentType == null && autoDetectContentType) {
contentType = probeContentType(file.toPath());
if (!isDirectory) {
contentType = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_TYPE);
if (contentType == null && autoDetectContentType) {
contentType = probeContentType(file.toPath());
}
}
if (attributes.contains(XATTR_CONTENT_MD5)) {
ByteBuffer buf = ByteBuffer.allocate(view.size(XATTR_CONTENT_MD5));