From 8a4ee9855f467ec6cf244305810161d82edf20cf Mon Sep 17 00:00:00 2001 From: Arnaud Date: Fri, 1 Nov 2024 18:02:05 +0100 Subject: [PATCH] Add metadata for upload --- README.md | 8 ++++++-- package-lock.json | 4 ++-- package.json | 2 +- src/data/data.ts | 13 +++++++++++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ba1f71c..3c8c430 100644 --- a/README.md +++ b/README.md @@ -266,6 +266,7 @@ Upload a file in a streaming manner - file (File, required) - onProgress (onProgress: (loaded: number, total: number) => void, optional) +- metadata ({ filename?: string, mimetype?: string }, optional) - returns [UploadResponse](./src/data/types.ts#L85) Example: @@ -273,10 +274,13 @@ Example: ```js // Get file from previous event const [file] = e.target.files - +const metadata = { + filename: file.name, + mimetype: file.type, +} const upload = data.upload(file, (loaded: number, total: number) => { // Use loaded and total so update a progress bar for example -}); +}, metadata); await upload.result(); ``` diff --git a/package-lock.json b/package-lock.json index 4dc4b3a..0742d71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@codex-storage/sdk-js", - "version": "0.0.13", + "version": "0.0.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@codex-storage/sdk-js", - "version": "0.0.13", + "version": "0.0.14", "license": "MIT", "dependencies": { "valibot": "^0.32.0" diff --git a/package.json b/package.json index 59a46ee..758f63e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@codex-storage/sdk-js", - "version": "0.0.13", + "version": "0.0.14", "description": "Codex SDK to interact with the Codex decentralized storage network.", "repository": { "type": "git", diff --git a/src/data/data.ts b/src/data/data.ts index 7fadac2..a20baed 100644 --- a/src/data/data.ts +++ b/src/data/data.ts @@ -59,7 +59,8 @@ export class CodexData { */ upload( file: Document | XMLHttpRequestBodyInit, - onProgress?: (loaded: number, total: number) => void + onProgress?: (loaded: number, total: number) => void, + metadata: { filename?: string, mimetype?: string } = {}, ): UploadResponse { const url = this.url + Api.config.prefix + "/data"; @@ -73,7 +74,15 @@ export class CodexData { }; xhr.open("POST", url, true); - // xhr.setRequestHeader("Content-Disposition", "attachment; filename=\"" + file.name + "\"") + + if (metadata.filename) { + xhr.setRequestHeader("Content-Disposition", "attachment; filename=\"" + metadata.filename + "\"") + } + + if (metadata.mimetype) { + xhr.setRequestHeader("Content-Type", metadata.mimetype) + } + xhr.send(file); xhr.onload = function () {