将文件保存到Azure Functions中的临时位置

p8ekf7hl  于 2023-08-07  发布在  其他
关注(0)|答案(4)|浏览(129)

我有一个Azure函数,我正在尝试将.xlsx文件保存到临时文件夹。我的代码在本地工作,但当我发布到Azure时,我收到一条错误消息。

string projectDirectory = Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName + @"\temp\";
string tempFilename = "abc.xlsx";
string pathTradeRecFile = Path.Combine(projectDirectory, tempFilename);

字符串
我的错误信息。<-拒绝访问路径“C:\Program Files(x86)\SiteExtensions\temp\abc.xlsx”。
有人能告诉我如何将此文件保存在某个地方吗?我在我的结构中创建了一个名为“temp”的文件夹作为一个可能的解决方案,但我似乎无法访问它。
如有任何帮助,将不胜感激!!

55ooxyrt

55ooxyrt1#

请不要在Azure Functions中使用类似Environment.CurrentDirectory的东西(或者实际上,只是在任何地方)来获取临时文件夹。使用.NET-native方法来执行此操作:

Path.GetTempPath()

字符串
所以理想情况下使用这样的东西:

string pathTradeRecFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + ".xlsx");

rnmwe5a2

rnmwe5a22#

我很抱歉,但我没有得到你的意图保存文件在Azure存储文件系统?但是,如果azure函数允许在本地保存文件,那么您应该使用Directory.GetCurrentDirectory();,它将解析为D:\home\site\wwwroot路径。
首先,如果您需要将文件保存在本地,以便最终上传到Azure Blob等持久存储器,那么您不需要将文件保存在本地文件系统;你可以使用MemoryStream,如下面的代码所示,在Azure blob上传内容

using (var ms = new MemoryStream())  
{ 
     using (StreamWriter writer = new StreamWriter(ms))
     { 
            writer.Write(obj);   // here obj represents the file data which you need to upload
            writer.Flush();  
            ms.Position = 0 
     };  
     await blob.UploadFromStreamAsync(ms);  
}

字符串

ctzwtxfj

ctzwtxfj3#

Azure函数所看到的环境变量与整个OS环境变量不同。有关如何配置它们,请参阅此页:https://learn.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings?tabs=portal#settings。System.Environment.GetEnvironmentVariable(name)调用在Azure中运行时返回此值。在本地,该值来自local.settings.json文件:https://learn.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library?tabs=v2%2Ccmd#environment-variables。

iugsix8n

iugsix8n4#

在Python运行时的情况下,基本操作系统将是Linux,所以你可以像下面这样解决它:

import tempfile

# Get the temporary file
# With suffix/prefix you can add suffix/prefix
# delete=False prevents this file from deletion as soon as you close it
temp_file = tempfile.NamedTemporaryFile(suffix=".tf.json", delete=False)

# File Name with full path
print(temp_file.name)

字符串
Source Documentation

相关问题