diff --git a/src/client/app/common/views/components/misskey-flavored-markdown.ts b/src/client/app/common/views/components/misskey-flavored-markdown.ts
index c93e09fb5..1480c0325 100644
--- a/src/client/app/common/views/components/misskey-flavored-markdown.ts
+++ b/src/client/app/common/views/components/misskey-flavored-markdown.ts
@@ -92,7 +92,7 @@ export default Vue.component('misskey-flavored-markdown', {
 				case 'hashtag':
 					return createElement('a', {
 						attrs: {
-							href: `${url}/tags/${token.hashtag}`,
+							href: `${url}/tags/${encodeURIComponent(token.hashtag)}`,
 							target: '_blank'
 						}
 					}, token.content);
diff --git a/src/client/app/common/views/widgets/hashtags.vue b/src/client/app/common/views/widgets/hashtags.vue
index 2065bd407..56520400b 100644
--- a/src/client/app/common/views/widgets/hashtags.vue
+++ b/src/client/app/common/views/widgets/hashtags.vue
@@ -11,7 +11,7 @@
 			<div>
 				<div v-for="stat in stats" :key="stat.tag">
 					<div class="tag">
-						<router-link :to="`/tags/${ stat.tag }`" :title="stat.tag">#{{ stat.tag }}</router-link>
+						<router-link :to="`/tags/${ encodeURIComponent(stat.tag) }`" :title="stat.tag">#{{ stat.tag }}</router-link>
 						<p>{{ '%i18n:@count%'.replace('{}', stat.usersCount) }}</p>
 					</div>
 					<x-chart class="chart" :src="stat.chart"/>
diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts
index 91bf5b010..dd41f4462 100644
--- a/src/services/drive/add-file.ts
+++ b/src/services/drive/add-file.ts
@@ -25,7 +25,7 @@ async function save(readable: stream.Readable, name: string, type: string, hash:
 		const minio = new Minio.Client(config.drive.config);
 		const id = uuid.v4();
 		const obj = `${config.drive.prefix}/${id}`;
-		await minio.putObject(config.drive.bucket, obj, readable);
+		await minio.putObject(config.drive.bucket, obj, readable, size, { 'Content-Type': type });
 
 		Object.assign(metadata, {
 			withoutChunks: true,