我们有一个应用程序,其中我们使用一个表单将信息和文件发送到我们的blob存储。我们使用的是MulterAzureStorage包。与此同时,我们正在使用中间件,这样用户就可以验证自己。身份验证中间件之前已经使用过,并且已知其工作正常。当我们在没有身份验证和multer中间件的情况下遵循工作流时,req.body参数将填充表单的数据(包括文件)。不幸的是,当我们添加这两个中间件时,req.body是空的,没有文件存储在blob存储的容器中。
代码的结构如下所示:
const azureStorage = new MulterAzureStorage({
connectionString: AZURE_CONNECTION_STRING,
accessKey: AZURE_ACCESS_KEY,
accountName: AZURE_STORAGE_ACCOUNT_NAME,
containerName: CONTAINER_NAME,
blobName: BLOB_NAME,
});
const upload = multer({
storage: azureStorage
});
router.post('/verzoek',[auth,upload.any()], async (req, result) => {
console.log(req.body)
// Our code continues below but it is removed for simplicity
}
由于我们可以在没有中间件的情况下读取req.body,因此我们认为请求是正确的。然而,为了确保,post请求如下所示:
const request = new FormData();
// At this point we filled the variable request but we removed it for simplicity
$.ajax({
async: true,
method: 'POST',
url: '/aanvragen/verzoek',
data: request,
cache: false,
processData: false,
contentType: false,
xhr: function () {
var xhr = new XMLHttpRequest();
return xhr;
}
}).done(function (result) {
if (result == "Succes") {
// Activate some classes
} else {
// An alert
}
}).fail(function (xhr, status) {
// An error message
});
总而言之,中间件出现了问题,请求的主体没有内容。我们尝试了一些建议,但没有任何效果。希望有人能帮助我们找到问题!感谢您的评分
1条答案
按热度按时间e7arh2l61#
当我运行上面的代码时,我得到了下面给出的结果。
命令需要使用
npm install express multer @azure/storage-blob
。我使用postman将POST表单数据文件发送到container。
我刚刚查看了文件是否上传到我的云存储账户。