如何在 C# 中将字符串数据作为 ZIP 存档上传到 FTP 服务器

2024-03-09

这是我的代码。我想导出/上传这个.dat文件以 zip 格式传输到 FTP 服务器。 我尝试了很多但没有找到任何解决方案。任何人都可以帮助我解决这个问题。

public string ExportVoid(FileSetups fileSetup, HttpPostedFileBase file)
{
    var sb = new System.Text.StringBuilder();

    var list = _context.VOIDS.ToList();
  
    foreach (var item in list)
    {
        sb.AppendFormat("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\r", item.Date, item.Time, item.Shift, item.EmployeeID, item.Amount, item.Items, item.DrawerOpen, item.Postpone, item.LocationID);
    }
    System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
   
    WebClient myWebClient = new WebClient();
    var dbftp = _context.FileSetup.SingleOrDefault();
    var a = dbftp.FTP;
    var v = Session["ClientId"];
    var d = DateTime.Now.ToString("MM_dd_yyyy_hh:mm:ss");
    string uriString = "ftp://MyFTP.com/Files/" + "Void" + ".dat";
    myWebClient.Credentials = new NetworkCredential("userName", "password");
    //Console.WriteLine("\nPlease enter the data to be posted to the URI {0}:", uriString);
    string postData = sb.ToString();
    // Apply ASCII Encoding to obtain the string as a byte array.
    byte[] postArray = Encoding.ASCII.GetBytes(postData);

    myWebClient.Headers.Add("Content-Disposition", "attachment; filename=" + "Void.dat");
    
    byte[] responseArray = myWebClient.UploadData(uriString, postArray);

    return "Export Successfully!";
}

如果你想压缩内存中的字符串(postData)并将 zip 上传到 FTP 服务器,您可以使用:

using (var memoryStream = new MemoryStream())
{
    using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
    {
        // Repeat this block, if you want to add more files
        ZipArchiveEntry entry = archive.CreateEntry("void.dat");

        using (Stream entryStream = entry.Open())
        using (var writer = new StreamWriter(entryStream, Encoding.UTF8))
        {
            writer.Write(postData);
        }
    }

    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);
    }
}

如果文本很小,那么内存占用并不重要,您可以简化上传代码(一切都来自memoryStream.Seek到最后)到:

    var client = new WebClient();
    client.Credentials = new NetworkCredential("username", "password");
    client.UploadData(
        "ftp://ftp.example.com/remote/path/archive.zip", memoryStream.ToArray());

基于在 C# 中压缩目录并上传到 FTP 服务器,而不将 .zip 文件保存在本地 https://stackoverflow.com/q/46682983/850848.


关于相反操作的相关问题:
如何使用 C# 将数据从存储在 FTP 服务器上的 ZIP 文件导入到数据库 https://stackoverflow.com/q/66370122/850848

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中将字符串数据作为 ZIP 存档上传到 FTP 服务器 的相关文章

随机推荐

  • 为 Clojure 协议提供多种实现

    我有一个公开常见数据相关函数的命名空间 get images insert user 然后 我有两个具有相同功能并以不同方式实现它们的数据库后端 他们按原样实现接口 每个后端都包含在一个命名空间中 我似乎无法找到如何完成此任务的良好解决方案
  • Java 项目中服务器和客户端包的共享资源

    我有一个 Java 项目 其中包含服务器包和客户端包 另外我还有一个图书馆包 我使用 eclipse 并将所有内容放入一个 Java 项目中 每个部分服务器 客户端和库都位于单独的包中 问题是当我导出时 所有内容都会添加到 Jar 文件中
  • 如何在 Azure Key Vault 中序列化和反序列化 PFX 证书?

    我有一堆字符串和 pfx 证书 我想将它们存储在 Azure Key Vault 中 只有允许的用户 应用程序才能获取它们 将字符串存储为 Secret 并不难 但是如何以可以检索它并反序列化为证书的方式序列化证书 X509证书2 http
  • Pandas:连接数据帧并保留重复索引

    我有两个数据框 我想将它们按列 axis 1 与内部联接连接起来 其中一个数据帧有一些重复的索引 但行不重复 我不想丢失其中的数据 df1 pd DataFrame a 1 b 2 a 1 b 3 a 2 b 4 columns a b s
  • Laravel - 计算目录的总大小?

    我试图获取 Laravel 中 directory 的总大小 到目前为止我只能使用 size 函数获取单个文件的大小 好像没有这方面的例子或者文档 任何对此的意见将不胜感激 谢谢 我认为你不能 Laravel 5 用途飞行系统 http f
  • 如何将负数转换为正数?

    如何在Python中将负数转换为正数 并保持积极的态度 gt gt gt n 42 gt gt gt n if you know n is negative 42 gt gt gt abs n for any n 42 不要忘记检查docs
  • 如何将枚举类型变量转换为字符串?

    如何使 printf 显示枚举类型变量的值 例如 typedef enum Linux Apple Windows OS type OS type myOS Linux 我需要的是类似的东西 printenum OS type My OS
  • CSS 弹跳线加载动画

    我正在尝试创建一个简单的加载动画 来回绘制一条线 但目前仅朝一个方向移动 一旦到达动画的中间 它就不会以相反的方向动画 这是我的CSS keyframes loader animation 0 width 0 49 width 100 50
  • 在TabLayout设计支持库中无法看到Tab Indicator

    我正在使用材料设计库并使用创建布局CoordinatorLayout 应用栏布局 RecyclerView and TabLayout 我的问题是我无法看到选项卡指示器Tablayout 下面是我正在使用的 xml 文件AppCompact
  • 错误的snakemake glob_wilcards 和 wildcard_constraints

    在我的 Snakemake 管道中 我试图检索正确的通配符 我研究过 wildcard constraints 和这个帖子 https stackoverflow com questions 66882849 snakemake how t
  • 使用 jersey 和 grizzly 启用 JSON

    我正在玩 Grizzly 托管的 Jersey 并且希望能够使用和生成 JSON 但是我在 get 请求中从服务器收到 500 并且 POST 中不支持媒体类型 我的服务器代码是 org glassfish jersey server Re
  • Safari 9.0无法播放存储服务器上的mp4视频

    以下视频链接无法用safari 9 0 最新版本 播放 但老版本的 safari chrome 和 firefox 都可以玩 http assets00 grou ps 0F2E3C wysiwyg files Videos saksuka
  • 执行迁移时 Npgsql 找不到 NpgsqlException

    当我做一个update database我得到的数据库发生错误 System Runtime Serialization SerializationException 类型不是 已解决成员 Npgsql NpgsqlException Np
  • Holo 主题可以与自定义标题栏一起使用吗?

    我有一个应用程序 它使用以下样式为应用程序主题绘制自定义标题栏 这并没有给我全息主题 所以我将其设置为parent android style Theme Holo 这会使应用程序崩溃并出现以下错误 E AndroidRuntime 204
  • 使用 CAMediaTimingFunction 计算时间 (t) 处的值

    在Cocoa Touch中 CAMediaTimingFunction代表四个控制点 它们指定定时函数的三次贝塞尔曲线 对于我正在编写的应用程序 我希望能够在任意时间 t 0 gt 1 提取所述贝塞尔曲线的结果 让我困惑的是 当我查找如何d
  • CBOW 与Skip-gram:为什么要颠倒上下文和目标词?

    In this https www tensorflow org versions r0 9 tutorials word2vec index html vector representations of words页面上 据说 skip
  • SQL Server 2005 Unicode字符串排序问题

    我有一张名为 Soum 的表 这张表有NVARCHAR 100 字段命名 Name 但排序依据name 那个错误的工作 请看图片 执行查询后 第一个红行排序错误 我不明白为什么这是错误的工作 我检查了字符是否相同 但红色行中的 字符是相同的
  • git:如何从远程分支获取并合并到本地分支?

    我分叉自 github com mantisbt mantisbt https github com mantisbt mantisbt 这导致 github com MYACCOUNT mantisbt 从我克隆它的地方并将分支 我感兴趣
  • 命名空间 .AspNetCore.Hosting 与 .Extensions.Hosting

    在我的 ASP NET Core 2 0 项目中 我一直在使用 Microsoft Extensions Hosting 命名空间中的 IHostingEnvironment 和 IApplicationLifetime 在 ASP NET
  • 如何在 C# 中将字符串数据作为 ZIP 存档上传到 FTP 服务器

    这是我的代码 我想导出 上传这个 dat文件以 zip 格式传输到 FTP 服务器 我尝试了很多但没有找到任何解决方案 任何人都可以帮助我解决这个问题 public string ExportVoid FileSetups fileSetu