Introduction
In this tutorial, we will demonstrate how to upload and download files using the ethstorage-sdk tool.
The ethstorage-sdk
provides APIs for file upload, download, and management.
Step 1: Install ethstorage-sdk
You can install ethstorage-sdk
by the following command:
Step 2: Manage Files
2.1 Create FlatDirectory
In this section, you will create a FlatDirectory
contract for managing files.
const { FlatDirectory } = require("ethstorage-sdk");
const rpc = "https://rpc.sepolia.org";
const privateKey = "0x...";
const flatDirectory = await FlatDirectory.create({
rpc: rpc,
privateKey: privateKey,
});
const contracAddress = await flatDirectory.deploy();
console.log(`FlatDirectory address: ${contracAddress}.`);
// FlatDirectory address: 0x37df32c7a3c30d352453dadacc838461d8629016
If you already have a FlatDirectory
contract, you can set it.
const address = "0x37df32c7a3c30d352453dadacc838461d8629016"; // FlatDirectory address
const flatDirectory = await FlatDirectory.create({
rpc: rpc,
privateKey: privateKey,
address: address,
});
2.2: Upload Files To FlatDirectory
In this section, you will upload some files into the FlatDirectory
that you just created.
You can use Buffer
to upload files.
const request = {
key: "test.txt",
content: Buffer.from("big data"),
type: 2, // 1 for calldata and 2 for blob
callback: callback
}
await flatDirectory.upload(request);
You can also upload File
objects. This applies to both browser and Node.js environments.
Browser
// <input id='fileToUpload' />
const file = document.getElementById('fileToUpload').files[0];
const request = {
key: "test.txt",
content: file,
type: 2,
callback: callback
}
await flatDirectory.upload(request);
Node.js
const {NodeFile} = require("ethstorage-sdk/file");
const file = new NodeFile("/usr/download/test.jpg");
const request = {
key: "test.jpg",
content: file,
type: 2,
callback: callback
}
await flatDirectory.upload(request);
const callback = {
onProgress: function (progress, count, isChange) {
...
},
onFail: function (err) {
...
},
onFinish: function (totalUploadChunks, totalUploadSize, totalStorageCost) {
...
}
};
2.3: Download Files From FlatDirectory
In this section, you will download files from the ethstorage network.
// Note: To download files, you need to specify the `ethStorageRpc`.
const ethStorageRpc = "https://[ethstorage.rpc].io";
const flatDirectory = await FlatDirectory.create({
rpc: rpc,
ethStorageRpc: ethStorageRpc,
privateKey: privateKey,
address: address,
});
const key = "test.txt";
await flatDirectory.download(key, {
onProgress: function (progress, count, chunk) {
...
},
onFail: function (error) {
...
},
onFinish: function () {
...
}
});
Step 3: Manage Blobs
3.1 Create EthStorage
In this section, you can create an EthStorage
instance to interact directly with EthStorage for managing blobs.
const { EthStorage } = require("ethstorage-sdk");
const rpc = "https://rpc.sepolia.org";
const ethStorageRpc = "https://[ethstorage.rpc].io";
const privateKey = "0x...";
const ethStorage = await EthStorage.create({
rpc: rpc,
ethStorageRpc: ethStorageRpc,
privateKey: privateKey,
});
3.2 Write Blob
Write blob data to the EthStorage network.
const key = "test.txt";
const data = Buffer.from("test data");
await ethStorage.write(key, data);
3.3 Read Blob
Read the written data from the EthStorage network.
const key = "test.txt";
const data = await ethStorage.read(key);
Last updated