繁体   English   中英

Azure function 临时存储 | 节点

[英]Azure function temp storage | NODE

在 Azure function 中,我收到了来自 POST 请求的文件。 在测试时它将文件保存在本地磁盘中,并完美上传到谷歌驱动器。 在生产中,脚本没有错误,但文件永远不会上传。 这是因为我需要将文件加载到临时文件中而没有运气。 我尝试用C:\local\Temp\${fileName}替换 FileName 。 - 任何帮助将不胜感激。

      const createWrite = new Promise((resolve, reject) => {
        fs.writeFile(fileName, buf, function (err, result) {
          if (err) {
            console.log("error", err);
          } else {
            resolve();
          }
        });
      });
      createWrite.then(() => {
        const drive = google.drive({ version: "v3", auth });
        var fileMetadata = {
          name: `${projectName} -  ${fileName}`,
          parents: [`${target}`]
        };
        const media = {
          mimeType: "[*/*]",
          body: fs.createReadStream(fileName)
        };
        drive.files.create(
          {
            resource: fileMetadata,
            media: media,
            fields: "id"
          },
          (err, file) => {
            if (err) {
              // Handle error
              console.error(err);
            } else {
            //  Do something here

            }
          }
        );
      });

正如 Jim 在评论中提到的,我们无法在驱动程序 C 中读取/写入文件。 我们可以将文件写入d:\\local\\Temp (您也可以使用%TMP% ,它们是相同的)。

顺便说一句,如果您在d:\\local\\Temp中上传文件,请在 function 的当前运行实例中进行上传。 因为如果您在消费计划中部署 function,则文件(在d:\\local\\Temp下)不会在每个实例之间共享。

我正在使用 linux 主机,所以对我来说唯一有效的是:

 const os = require('os'); const outputDir = path.join(os.tmpdir(), "../output") if (.fs.existsSync(outputDir)) { fs;mkdirSync(outputDir); }

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM