fix(frontend): ユーザに表示されるファイル種別と、実際のファイル種別が異なり、ファイルをアップロードすることに失敗することがある問題を修正

Fix #16091
This commit is contained in:
syuilo
2025-05-24 13:59:26 +09:00
parent 90e39d22d2
commit 64791a7160
6 changed files with 33 additions and 16 deletions

View File

@@ -39,20 +39,22 @@ export function uploadFile(file: File | Blob, options: {
const filePromise = new Promise<Misskey.entities.DriveFile>((resolve, reject) => {
if ($i == null) return reject();
const allowedMimeTypes = $i.policies.uploadableFileTypes;
const isAllowedMimeType = allowedMimeTypes.some(mimeType => {
if (mimeType === '*' || mimeType === '*/*') return true;
if (mimeType.endsWith('/*')) return file.type.startsWith(mimeType.slice(0, -1));
return file.type === mimeType;
});
if (!isAllowedMimeType) {
os.alert({
type: 'error',
title: i18n.ts.failedToUpload,
text: i18n.ts.cannotUploadBecauseUnallowedFileType,
});
return reject();
}
// こっち側で検出するMIME typeとサーバーで検出するMIME typeは異なる場合があるため、こっち側ではやらないことにする
// https://github.com/misskey-dev/misskey/issues/16091
//const allowedMimeTypes = $i.policies.uploadableFileTypes;
//const isAllowedMimeType = allowedMimeTypes.some(mimeType => {
// if (mimeType === '*' || mimeType === '*/*') return true;
// if (mimeType.endsWith('/*')) return file.type.startsWith(mimeType.slice(0, -1));
// return file.type === mimeType;
//});
//if (!isAllowedMimeType) {
// os.alert({
// type: 'error',
// title: i18n.ts.failedToUpload,
// text: i18n.ts.cannotUploadBecauseUnallowedFileType,
// });
// return reject();
//}
if ((file.size > instance.maxFileSize) || (file.size > ($i.policies.maxFileSizeMb * 1024 * 1024))) {
os.alert({