【问题标题】:How to upload file to FTP/webdav generated by c# Azure Function? [duplicate]如何将文件上传到 c# Azure Function 生成的 FTP/webdav? [复制]
【发布时间】:2021-12-13 15:14:06
【问题描述】:

我想要做的是创建一个 Azure 函数来生成某些文件。 然后我必须:

  1. 将这些文件上传到 FTP 服务器或 Webdav 服务器
  2. 将它们归档到存储帐户。

您推荐什么解决方案?在执行上述操作时如何存储这些临时文件? (对不起这个问题,这是我正在处理的第一个 Azure 函数。)

【问题讨论】:

标签: azure ftp azure-functions azure-storage webdav


【解决方案1】:

谢谢Martin-Prikryl。发布您的建议作为帮助其他社区成员的答案。

将这些文件上传到 FTP 服务器或 Webdav 服务器

下面是如何使用memorystream.docx 上传到FTP 服务器的示例代码。 只需将您的流复制到 FTP 请求流:

Stream requestStream = ftpRequest.GetRequestStream();
stream.CopyTo(requestStream);
requestStream.Close();

对于一个字符串(假设内容是一个文本):

byte[] bytes = Encoding.UTF8.GetBytes(data);

using (Stream requestStream = request.GetRequestStream())
{
    requestStream.Write(bytes, 0, bytes.Length);
}

或者更好地使用StreamWriter

using (Stream requestStream = request.GetRequestStream())
using (StreamWriter writer = new StreamWriter(requestStream, Encoding.UTF8))
{
    writer.Write(data);
}

如果内容是文本,则应使用文本模式:

request.UseBinary = false;

查看SO 了解更多信息。

将它们归档到存储帐户。

以下是如何归档文件的示例

using (Stream memoryStream = new MemoryStream())
{
    using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
    {
        foreach (string path in Directory.EnumerateFiles(@"C:\source\directory"))
        {
            ZipArchiveEntry entry = archive.CreateEntry(Path.GetFileName(path));

            using (Stream entryStream = entry.Open())
            using (Stream fileStream = File.OpenRead(path))
            {
                fileStream.CopyTo(entryStream);
            }
        }
    }

    memoryStream.Seek(0, SeekOrigin.Begin);

    var request =
        WebRequest.Create("ftp://ftp.example.com/remote/path/archive.zip");
    request.Credentials = new NetworkCredential("username", "password");
    request.Method = WebRequestMethods.Ftp.UploadFile;
    using (Stream ftpStream = request.GetRequestStream())
    {
        memoryStream.CopyTo(ftpStream);
    }
}

查看SO 了解完整信息。

【讨论】:

  • 不要从其他答案中复制代码,请考虑对其进行投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2013-02-22
相关资源
最近更新 更多