This is a provider for the Strapi Framework that allows you to upload files directly to Tencent Cloud Object Storage (COS).
npm install strapi-provider-upload-tencent-cos-next
To configure the provider, add the following code to config/plugins.js
:
module.exports = ({ env }) => ({
// ...
upload: {
provider: "tencent-cos-next",
providerOptions: {
secretId: env("TENCENT_COS_SECRET_ID"),
secretKey: env("TENCENT_COS_SECRET_KEY"),
region: env("TENCENT_COS_REGION"),
bucket: env("TENCENT_COS_BUCKET"),
basePath: env("TENCENT_COS_BASE_PATH", "/"),
baseOrigin: env(
"TENCENT_COS_BASE_ORIGIN",
"https://{Bucket}.cos.{Region}.myqcloud.com"
),
},
},
// ...
});
You will also need to install the cos-nodejs-sdk-v5
package as a dependency:
npm install cos-nodejs-sdk-v5
The provider provides the following methods:
-
upload(file: File): Promise
Uploads a file to the COS bucket. The
File
object should have the following properties:url
: The URL of the file. This property is not used by the provider and can be left empty.stream
: A Node.js readable stream containing the contents of the file.name
: The name of the file.mime
: The MIME type of the file.size
: The size of the file in bytes.
-
uploadStream(file: File): Promise
Same as
upload
, but takes a stream instead of a buffer. -
delete(file: File): Promise
Deletes a file from the COS bucket. The
File
object should have theurl
property set to the URL of the file to be deleted. -
checkFileSize(file: File, options: { sizeLimit: number }): void
Checks if a file exceeds a given size limit (in bytes). Throws an error if the file is too large.
-
getSignedUrl(file: File): Promise<{ url: string }>
Generates a signed URL for downloading a private file. This method is not used by the provider and always returns a public URL.
-
isPrivate(): boolean
Returns
false
, indicating that all uploaded files are public.
This package is licensed under the MIT License.