The Cloud Storage API lets you store and manage data in the cloud.
It comes with a comprehensive but familiar file system operations including write, read, delete, move, and copy for files, plus powerful directory management features like creating directories, listing contents, and much more.
With Puter.js, you don't need to worry about setting up storage infrastructure such as configuring buckets, managing CDNs, or ensuring availability, since everything is handled for you. Additionally, with the User Pays Model, you don't have to worry about storage or bandwidth costs, as users of your application cover their own usage.
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
// Create a new file called "hello.txt" containing "Hello, world!"
puter.fs.write('hello.txt', 'Hello, world!').then(() => {
puter.print('File written successfully');
})
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
// (1) Create a random text file
let filename = puter.randName() + ".txt";
await puter.fs.write(filename, "Hello world! I'm a file!");
puter.print(`"${filename}" created<br>`);
// (2) Read the file and print its contents
let blob = await puter.fs.read(filename);
let content = await blob.text();
puter.print(`"${filename}" read (content: "${content}")<br>`);
})();
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
// Create a directory with random name
let dirName = puter.randName();
puter.fs.mkdir(dirName).then((directory) => {
puter.print(`"${dirName}" created at ${directory.path}`);
}).catch((error) => {
puter.print('Error creating directory:', error);
});
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
puter.fs.readdir('./').then((items) => {
// print the path of each item in the directory
puter.print(`Items in the directory:<br>${items.map((item) => item.path)}<br>`);
}).catch((error) => {
puter.print(`Error reading directory: ${error}`);
});
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
// Create hello.txt
await puter.fs.write('hello.txt', 'Hello, world!');
puter.print(`"hello.txt" created<br>`);
// Rename hello.txt to hello-world.txt
await puter.fs.rename('hello.txt', 'hello-world.txt')
puter.print(`"hello.txt" renamed to "hello-world.txt"<br>`);
})();
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
// (1) Create a random text file
let filename = puter.randName() + '.txt';
await puter.fs.write(filename, 'Hello, world!');
puter.print(`Created file: "${filename}"<br>`);
// (2) create a random directory
let dirname = puter.randName();
await puter.fs.mkdir(dirname);
puter.print(`Created directory: "${dirname}"<br>`);
// (3) Copy the file into the directory
puter.fs.copy(filename, dirname).then((file)=>{
puter.print(`Copied file: "${filename}" to directory "${dirname}"<br>`);
}).catch((error)=>{
puter.print(`Error copying file: "${error}"<br>`);
});
})()
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
// (1) Create a random text file
let filename = puter.randName() + '.txt';
await puter.fs.write(filename, 'Hello, world!');
puter.print(`Created file: ${filename}<br>`);
// (2) create a random directory
let dirname = puter.randName();
await puter.fs.mkdir(dirname);
puter.print(`Created directory: ${dirname}<br>`);
// (3) Move the file into the directory
await puter.fs.move(filename, dirname);
puter.print(`Moved file: ${filename} to directory ${dirname}<br>`);
// (4) Delete the file and directory (cleanup)
await puter.fs.delete(dirname + '/' + filename);
await puter.fs.delete(dirname);
})();
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
// () create a file
await puter.fs.write('hello.txt', 'Hello, world!');
puter.print('hello.txt created<br>');
// (2) get information about hello.txt
const file = await puter.fs.stat('hello.txt');
puter.print(`hello.txt name: ${file.name}<br>`);
puter.print(`hello.txt path: ${file.path}<br>`);
puter.print(`hello.txt size: ${file.size}<br>`);
puter.print(`hello.txt created: ${file.created}<br>`);
})()
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
// (1) Create a random file
let filename = puter.randName();
await puter.fs.write(filename, 'Hello, world!');
puter.print('File created successfully<br>');
// (2) Delete the file
await puter.fs.delete(filename);
puter.print('File deleted successfully');
})();
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<input type="file" id="file-input" />
<script>
// File input
let fileInput = document.getElementById('file-input');
// Upload the file when the user selects it
fileInput.onchange = () => {
puter.fs.upload(fileInput.files).then((file) => {
puter.print(`File uploaded successfully to: ${file.path}`);
})
};
</script>
</body>
</html>
These cloud storage features are supported out of the box when using Puter.js:
puter.fs.write()
- Write data to a fileputer.fs.read()
- Read data from a fileputer.fs.mkdir()
- Create a directoryputer.fs.readdir()
- List contents of a directoryputer.fs.rename()
- Rename a file or directoryputer.fs.copy()
- Copy a file or directoryputer.fs.move()
- Move a file or directoryputer.fs.stat()
- Get information about a file or directoryputer.fs.delete()
- Delete a file or directoryputer.fs.upload()
- Upload a file from the local systemYou can see various Puter.js Cloud Storage features in action from the following examples: