Loading...
Loading...
Complete guide for CloudBase cloud storage using Web SDK (@cloudbase/js-sdk) - upload, download, temporary URLs, file management, and best practices.
npx skill4agent add tencentcloudbase/skills cloud-storage-web@cloudbase/js-sdkuploadFilegetTempFileURLdeleteFiledownloadFile[0-9a-zA-Z]/!-_. */folder/file.jpgimport cloudbase from "@cloudbase/js-sdk";
const app = cloudbase.init({
env: "your-env-id", // Replace with your CloudBase environment ID
});appconst result = await app.uploadFile({
cloudPath: "folder/filename.jpg", // File path in cloud storage
filePath: fileInput.files[0], // HTML file input element
});
// Result contains:
{
fileID: "cloud://env-id/folder/filename.jpg", // Unique file identifier
// ... other metadata
}const result = await app.uploadFile({
cloudPath: "uploads/avatar.jpg",
filePath: selectedFile,
method: "put", // "post" or "put" (default: "put")
onUploadProgress: (progressEvent) => {
const percent = Math.round(
(progressEvent.loaded * 100) / progressEvent.total
);
console.log(`Upload progress: ${percent}%`);
// Update UI progress bar here
}
});| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | Absolute path with filename (e.g., "folder/file.jpg") |
| File | Yes | HTML file input object |
| "post" | "put" | No | Upload method (default: "put") |
| function | No | Progress callback function |
[0-9a-zA-Z]/!-_. */"avatar.jpg""uploads/avatar.jpg""user/123/avatar.jpg"https://your-app.comhttp://localhost:3000const result = await app.getTempFileURL({
fileList: [
{
fileID: "cloud://env-id/folder/filename.jpg",
maxAge: 3600 // URL valid for 1 hour (seconds)
}
]
});
// Access the download URL
result.fileList.forEach(file => {
if (file.code === "SUCCESS") {
console.log("Download URL:", file.tempFileURL);
// Use this URL to download or display the file
}
});const result = await app.getTempFileURL({
fileList: [
{
fileID: "cloud://env-id/image1.jpg",
maxAge: 7200 // 2 hours
},
{
fileID: "cloud://env-id/document.pdf",
maxAge: 86400 // 24 hours
}
]
});| Parameter | Type | Required | Description |
|---|---|---|---|
| Array | Yes | Array of file objects |
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | Cloud storage file ID |
| number | Yes | URL validity period in seconds |
{
code: "SUCCESS",
fileList: [
{
code: "SUCCESS",
fileID: "cloud://env-id/folder/filename.jpg",
tempFileURL: "https://temporary-download-url"
}
]
}maxAgeSUCCESSERRORconst result = await app.deleteFile({
fileList: [
"cloud://env-id/folder/filename.jpg"
]
});
// Check deletion results
result.fileList.forEach(file => {
if (file.code === "SUCCESS") {
console.log("File deleted:", file.fileID);
} else {
console.error("Failed to delete:", file.fileID);
}
});const result = await app.deleteFile({
fileList: [
"cloud://env-id/old-avatar.jpg",
"cloud://env-id/temp-upload.jpg",
"cloud://env-id/cache-file.dat"
]
});| Parameter | Type | Required | Description |
|---|---|---|---|
| Array<string> | Yes | Array of file IDs to delete |
{
fileList: [
{
code: "SUCCESS",
fileID: "cloud://env-id/folder/filename.jpg"
}
]
}const result = await app.downloadFile({
fileID: "cloud://env-id/folder/filename.jpg"
});
// File is downloaded to browser default download location| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | Cloud storage file ID |
{
// Success response (no specific data returned)
// File is downloaded to browser
}getTempFileURLtry {
const result = await app.uploadFile({
cloudPath: "uploads/file.jpg",
filePath: selectedFile
});
if (result.code) {
// Handle error
console.error("Upload failed:", result.message);
} else {
// Success
console.log("File uploaded:", result.fileID);
}
} catch (error) {
console.error("Storage operation failed:", error);
}INVALID_PARAMPERMISSION_DENIEDRESOURCE_NOT_FOUNDSYS_ERRuploads/avatars/documents/