如何使用Azure WebJob将文件上载到Azure Blob存储?(使用C#,.NET)
我对Azure WebJob有一个非常基本的了解,即它可以在后台执行任务。我想上传文件到Azure Blob存储,特别是使用Azure WebJob。我想知道如何做到这一点,从头开始。假设要上载的文件在系统上的某个文件夹(例如C:/Users/Abc/Alpha/Beta/)中本地可用如何使用Azure WebJob将文件上载到Azure Blob存储?(使用C#,.NET),c#,.net,file-upload,azure-storage-blobs,azure-webjobs,C#,.net,File Upload,Azure Storage Blobs,Azure Webjobs,我对Azure WebJob有一个非常基本的了解,即它可以在后台执行任务。我想上传文件到Azure Blob存储,特别是使用Azure WebJob。我想知道如何做到这一点,从头开始。假设要上载的文件在系统上的某个文件夹(例如C:/Users/Abc/Alpha/Beta/)中本地可用 如何以及在何处定义应该执行的后台任务 如何确保在同一文件夹中有新文件时( C:/Users/Abc/Alpha/Beta/)该功能会自动触发,并且此新文件也会传输到Azure Blob存储 我可以监控每个文件的传
static void Main()
{
var config = new JobHostConfiguration();
FilesConfiguration filesConfig = new FilesConfiguration();
//set the root path when the function to watch the folder
filesConfig.RootPath = @"D:\";
config.UseFiles(filesConfig);
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
功能C:
public static void ImportFile(
[FileTrigger(@"fileupload\{name}", "*.*", WatcherChangeTypes.Created | WatcherChangeTypes.Changed)] Stream file,
FileSystemEventArgs fileTrigger,
[Blob("textblobs/{name}", FileAccess.Write)] Stream blobOutput,
TextWriter log)
{
log.WriteLine(string.Format("Processed input file '{0}'!", fileTrigger.Name));
file.CopyTo(blobOutput);
log.WriteLine("Upload File Complete");
}
我可以监控每个文件的传输进度吗?还是所有的文件
据我所知,有一个[BlobInput]属性,允许您指定要侦听的容器,它包括一个高效的blob侦听器,当检测到新blob时,该侦听器将分派给该方法。更多细节,你可以参考这个
如何处理传输期间的连接故障?我还应该担心哪些其他错误
您可以使用try-catch来捕获错误。如果发生错误,您可以将详细信息发送到队列或在blob中写入一个txt文件。然后,您可以根据队列消息或blob txt文件执行一些操作
如何以及在何处定义应该执行的后台任务
根据您的描述,您可以在VS中创建webjob控制台应用程序。您可以在本地运行此控制台应用程序
更多详细信息,您可以参考本文了解如何在VS中创建webjob
注意:由于您需要查看本地端文件夹,此webjob正在您的本地端运行,而不是上载到azure web应用程序
如何确保每当同一文件夹(C:/Users/Abc/Alpha/Beta/)中有新文件可用时,该功能会自动触发,并且该新文件也会传输到Azure Blob存储
据我所知,webjob支持,它将监视对特定目录的文件添加/更改,并在发生时触发作业功能
更多详细信息,请参考以下代码示例:
Program.cs:
static void Main()
{
var config = new JobHostConfiguration();
FilesConfiguration filesConfig = new FilesConfiguration();
//set the root path when the function to watch the folder
filesConfig.RootPath = @"D:\";
config.UseFiles(filesConfig);
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
功能C:
public static void ImportFile(
[FileTrigger(@"fileupload\{name}", "*.*", WatcherChangeTypes.Created | WatcherChangeTypes.Changed)] Stream file,
FileSystemEventArgs fileTrigger,
[Blob("textblobs/{name}", FileAccess.Write)] Stream blobOutput,
TextWriter log)
{
log.WriteLine(string.Format("Processed input file '{0}'!", fileTrigger.Name));
file.CopyTo(blobOutput);
log.WriteLine("Upload File Complete");
}
我可以监控每个文件的传输进度吗?还是所有的文件
据我所知,有一个[BlobInput]属性,允许您指定要侦听的容器,它包括一个高效的blob侦听器,当检测到新blob时,该侦听器将分派给该方法。更多细节,你可以参考这个
如何处理传输期间的连接故障?我还应该担心哪些其他错误
您可以使用try-catch来捕获错误。如果发生错误,您可以将详细信息发送到队列或在blob中写入一个txt文件。然后,您可以根据队列消息或blob txt文件执行一些操作。我建议您先阅读一些有关此主题的教程。如果您有具体问题,请返回并提供一些问题的示例代码谢谢!我也试着这么做。如果你在这方面有任何资源,请分享。我建议你先阅读一些关于这个主题的教程。如果您有具体问题,请返回并提供一些问题的示例代码谢谢!我也试着这么做。如果您对此有任何资源,请共享。