fix(frontend): ユーザに表示されるファイル種別と、実際のファイル種別が異なり、ファイルをアップロードすることに失敗することがある問題を修正
Fix #16091
This commit is contained in:
parent
90e39d22d2
commit
64791a7160
|
@ -7753,6 +7753,10 @@ export interface Locale extends ILocale {
|
||||||
* MIMEタイプを指定します。改行で区切って複数指定できるほか、アスタリスク(*)でワイルドカード指定できます。(例: image/*)
|
* MIMEタイプを指定します。改行で区切って複数指定できるほか、アスタリスク(*)でワイルドカード指定できます。(例: image/*)
|
||||||
*/
|
*/
|
||||||
"uploadableFileTypes_caption": string;
|
"uploadableFileTypes_caption": string;
|
||||||
|
/**
|
||||||
|
* ファイルによっては種別を判定できないことがあります。そのようなファイルを許可する場合は {x} を指定に追加してください。
|
||||||
|
*/
|
||||||
|
"uploadableFileTypes_caption2": ParameterizedString<"x">;
|
||||||
};
|
};
|
||||||
"_condition": {
|
"_condition": {
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2007,6 +2007,7 @@ _role:
|
||||||
chatAvailability: "チャットを許可"
|
chatAvailability: "チャットを許可"
|
||||||
uploadableFileTypes: "アップロード可能なファイル種別"
|
uploadableFileTypes: "アップロード可能なファイル種別"
|
||||||
uploadableFileTypes_caption: "MIMEタイプを指定します。改行で区切って複数指定できるほか、アスタリスク(*)でワイルドカード指定できます。(例: image/*)"
|
uploadableFileTypes_caption: "MIMEタイプを指定します。改行で区切って複数指定できるほか、アスタリスク(*)でワイルドカード指定できます。(例: image/*)"
|
||||||
|
uploadableFileTypes_caption2: "ファイルによっては種別を判定できないことがあります。そのようなファイルを許可する場合は {x} を指定に追加してください。"
|
||||||
_condition:
|
_condition:
|
||||||
roleAssignedTo: "マニュアルロールにアサイン済み"
|
roleAssignedTo: "マニュアルロールにアサイン済み"
|
||||||
isLocal: "ローカルユーザー"
|
isLocal: "ローカルユーザー"
|
||||||
|
|
|
@ -73,7 +73,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkSelect>
|
</MkSelect>
|
||||||
|
|
||||||
<div>{{ i18n.tsx._uploader.maxFileSizeIsX({ x: $i.policies.maxFileSizeMb + 'MB' }) }}</div>
|
<div>{{ i18n.tsx._uploader.maxFileSizeIsX({ x: $i.policies.maxFileSizeMb + 'MB' }) }}</div>
|
||||||
<div>{{ i18n.ts._uploader.allowedTypes }}: {{ $i.policies.uploadableFileTypes.join(', ') }}</div>
|
|
||||||
|
<!-- クライアントで検出するMIME typeとサーバーで検出するMIME typeが異なる場合があり、混乱の元になるのでとりあえず隠しとく -->
|
||||||
|
<!-- https://github.com/misskey-dev/misskey/issues/16091 -->
|
||||||
|
<!--<div>{{ i18n.ts._uploader.allowedTypes }}: {{ $i.policies.uploadableFileTypes.join(', ') }}</div>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -418,7 +418,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
<template #label>{{ i18n.ts._role.useBaseValue }}</template>
|
||||||
</MkSwitch>
|
</MkSwitch>
|
||||||
<MkTextarea :modelValue="role.policies.uploadableFileTypes.value.join('\n')" :disabled="role.policies.uploadableFileTypes.useDefault" :readonly="readonly" @update:modelValue="role.policies.uploadableFileTypes.value = $event.split('\n')">
|
<MkTextarea :modelValue="role.policies.uploadableFileTypes.value.join('\n')" :disabled="role.policies.uploadableFileTypes.useDefault" :readonly="readonly" @update:modelValue="role.policies.uploadableFileTypes.value = $event.split('\n')">
|
||||||
<template #caption>{{ i18n.ts._role._options.uploadableFileTypes_caption }}</template>
|
<template #caption>
|
||||||
|
<div>{{ i18n.ts._role._options.uploadableFileTypes_caption }}</div>
|
||||||
|
<div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.tsx._role._options.uploadableFileTypes_caption2({ x: 'application/octet-stream' }) }}</div>
|
||||||
|
</template>
|
||||||
</MkTextarea>
|
</MkTextarea>
|
||||||
<MkRange v-model="role.policies.uploadableFileTypes.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
<MkRange v-model="role.policies.uploadableFileTypes.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
|
||||||
<template #label>{{ i18n.ts._role.priority }}</template>
|
<template #label>{{ i18n.ts._role.priority }}</template>
|
||||||
|
|
|
@ -150,6 +150,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #label>{{ i18n.ts._role._options.uploadableFileTypes }}</template>
|
<template #label>{{ i18n.ts._role._options.uploadableFileTypes }}</template>
|
||||||
<template #suffix>...</template>
|
<template #suffix>...</template>
|
||||||
<MkTextarea :modelValue="policies.uploadableFileTypes.join('\n')">
|
<MkTextarea :modelValue="policies.uploadableFileTypes.join('\n')">
|
||||||
|
<template #caption>
|
||||||
|
<div>{{ i18n.ts._role._options.uploadableFileTypes_caption }}</div>
|
||||||
|
<div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.tsx._role._options.uploadableFileTypes_caption2({ x: 'application/octet-stream' }) }}</div>
|
||||||
|
</template>
|
||||||
</MkTextarea>
|
</MkTextarea>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
|
|
|
@ -39,20 +39,22 @@ export function uploadFile(file: File | Blob, options: {
|
||||||
const filePromise = new Promise<Misskey.entities.DriveFile>((resolve, reject) => {
|
const filePromise = new Promise<Misskey.entities.DriveFile>((resolve, reject) => {
|
||||||
if ($i == null) return reject();
|
if ($i == null) return reject();
|
||||||
|
|
||||||
const allowedMimeTypes = $i.policies.uploadableFileTypes;
|
// こっち側で検出するMIME typeとサーバーで検出するMIME typeは異なる場合があるため、こっち側ではやらないことにする
|
||||||
const isAllowedMimeType = allowedMimeTypes.some(mimeType => {
|
// https://github.com/misskey-dev/misskey/issues/16091
|
||||||
if (mimeType === '*' || mimeType === '*/*') return true;
|
//const allowedMimeTypes = $i.policies.uploadableFileTypes;
|
||||||
if (mimeType.endsWith('/*')) return file.type.startsWith(mimeType.slice(0, -1));
|
//const isAllowedMimeType = allowedMimeTypes.some(mimeType => {
|
||||||
return file.type === mimeType;
|
// if (mimeType === '*' || mimeType === '*/*') return true;
|
||||||
});
|
// if (mimeType.endsWith('/*')) return file.type.startsWith(mimeType.slice(0, -1));
|
||||||
if (!isAllowedMimeType) {
|
// return file.type === mimeType;
|
||||||
os.alert({
|
//});
|
||||||
type: 'error',
|
//if (!isAllowedMimeType) {
|
||||||
title: i18n.ts.failedToUpload,
|
// os.alert({
|
||||||
text: i18n.ts.cannotUploadBecauseUnallowedFileType,
|
// type: 'error',
|
||||||
});
|
// title: i18n.ts.failedToUpload,
|
||||||
return reject();
|
// text: i18n.ts.cannotUploadBecauseUnallowedFileType,
|
||||||
}
|
// });
|
||||||
|
// return reject();
|
||||||
|
//}
|
||||||
|
|
||||||
if ((file.size > instance.maxFileSize) || (file.size > ($i.policies.maxFileSizeMb * 1024 * 1024))) {
|
if ((file.size > instance.maxFileSize) || (file.size > ($i.policies.maxFileSizeMb * 1024 * 1024))) {
|
||||||
os.alert({
|
os.alert({
|
||||||
|
|
Loading…
Reference in New Issue