【问题标题】:Upload file to Azure blob fails from Electron app从 Electron 应用程序将文件上传到 Azure blob 失败
【发布时间】:2022-11-17 06:35:33
【问题描述】:

我正在使用 Vue.js 构建电子应用程序。我希望我的用户下载和上传文件,这些文件保存在 Azure Blob 中。

我已经成功地进行了下载,但我在上传时遇到了问题。我在我的 Vue 组件中使用以下代码:


import { BlobServiceClient } from '@azure/storage-blob'

const blobServiceClient = BlobServiceClient.fromConnectionString('connString')
const containerClient = blobServiceClient.getContainerClient('my container name')
const blockBlobClient = await this.containerClient.getBlockBlobClient('name of my blob')
const uploadBlobResponse = await blockBlobClient.uploadFile('C://dev//animage.jpg')

我得到的错误是“TypeError: Cannot read property 'size' of undefined'”,它源自 uploadFile 方法:

似乎 fsStat 无法解析我提供的文件路径。

我尝试过不同的路径,也尝试过 path.parse() 但没有任何运气。有谁知道我在这里做错了什么?

【问题讨论】:

  • 这看起来不像是有效的 Windows 路径。您是否尝试过使用反斜杠(并且只有一个斜杠),例如 C:\dev\animage.jpg?另外 - 仅供参考 - 您应该只对代码/数据/错误/等内容使用格式化文本。原因见Please do not upload images of code/data/errors.

标签: javascript azure azure-blob-storage


【解决方案1】:
  • 您得到 undefined 作为答案的原因是因为 fs.stats 是一个异步函数,如果不传递回调函数,它将给出 undefined 的答案。

  • 现在我建议你使用 fs.fstatSync 函数,这是一个同步函数,将返回文件的所有统计信息。

const  fs = require('fs');
const  file_fd = fs.openSync('./test.txt', 'r');let  r = fs.fstatSync();
console.log("Size of File : ",r.size);
  • 这里的 r 代表文件的所有统计信息,您可以访问文件的大小 r.size

【讨论】:

  • 但是这个 fsStat() 函数不是我自己的代码,它来自 @azure/storage-blob 包所以假设它在那里正确实现?
猜你喜欢
  • 2023-02-01
  • 2023-03-08
  • 2016-04-03
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 2017-03-14
  • 2018-05-26
  • 1970-01-01
相关资源
最近更新 更多