我有一个使用Angular作为前端的Node.js应用程序,需要上传文件和图像到Azure Blob。
我已创建容器并按照微软文档(https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs)设置了环境,版本为v12。
我的函数可以创建并将文件上传到Azure Blob,但我无法弄清楚如何将客户端提交的文件上传到Azure Blob。以下是我的TypeScript Node.js代码:
import * as formidable from 'formidable';
import * as fs from 'fs';
const { BlobServiceClient } = require('@azure/storage-blob');
const uuidv1 = require('uuid/v1');
const dotenv = require('dotenv');
dotenv.config();
class BlobController {
private AZURE_STORAGE_CONNECTION_STRING = process.env.CONSTRINGBlob;
constructor(router) {
router.post('/file', this.uploadFile.bind(this));
}
//----Get Lookup tables dynamically-----------//
async uploadFile(req, res) {
const blobServiceClient = await BlobServiceClient.fromConnectionString(this.AZURE_STORAGE_CONNECTION_STRING);
// Create a unique name for the container
//const containerName = 'quickstart' + uuidv1();
const containerName = blobServiceClient.getContainerClient('mycontainer');
console.log('\t', containerName.containerName);
// Get a reference to a container
const containerClient = await blobServiceClient.getContainerClient(containerName.containerName);
let form = new formidable.IncomingForm();
form.parse(req, async function (err, fields, files) {
const blobName = 'test' + uuidv1() + files.file;
// Get a block blob client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
console.log('\nUploading to Azure storage as blob:\n\t', blobName);
// Upload data to the blob
const data = 'Hello test';
const uploadBlobResponse = await blockBlobClient.upload(data, data.length);
console.log("Blob was uploaded successfully. requestId: ", uploadBlobResponse.requestId);
});
}
}
module.exports = BlobController
有谁能帮我解决如何使用Node.js上传发布到Azure Blob的文件吗?
form
处理文件上传时,它会自动将上传的内容保存在临时文件中,并且file.path
属性会给出该临时文件的完整路径。您不需要做任何特殊处理。请尝试此代码。希望对您有所帮助。 - Gaurav Mantri