Skip to content

Commit 477d2c3

Browse files
authored
fix: pass allowedMediaTypes for R2 uploads to resolve 415 error (#46)
1 parent 4c89d2a commit 477d2c3

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
},
3737
"dependencies": {
3838
"drizzle-orm": "^0.44.5",
39+
"mime": "^4.1.0",
3940
"zod": "^4.1.5"
4041
},
4142
"peerDependencies": {

src/r2.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { AuthContext } from "better-auth";
22
import { createAuthEndpoint, getSessionFromCtx, sessionMiddleware } from "better-auth/api";
33
import type { FieldAttribute } from "better-auth/db";
4+
import mime from "mime/lite";
45
import { z, type ZodType } from "zod";
56
import type { FileMetadata, R2Config } from "./types";
67

@@ -512,11 +513,18 @@ export const createR2Endpoints = (
512513
getR2Storage: () => ReturnType<typeof createR2Storage> | null,
513514
r2Config?: R2Config
514515
) => {
516+
const allowedMediaTypes = r2Config?.allowedTypes
517+
?.map(type => mime.getType(type))
518+
.filter((mimeType): mimeType is string => Boolean(mimeType));
519+
515520
return {
516521
upload: createAuthEndpoint(
517522
"/files/upload-raw",
518523
{
519524
method: "POST",
525+
metadata: {
526+
allowedMediaTypes,
527+
},
520528
},
521529
async ctx => {
522530
// Manually get session instead of using middleware

0 commit comments

Comments
 (0)