为了账号安全,请及时绑定邮箱和手机立即绑定

从我的服务器下载 zip 文件时遇到问题

从我的服务器下载 zip 文件时遇到问题

C#
慕盖茨4494581 2023-09-24 17:21:28
我已经设置了一个服务器端点,它将压缩文件文件夹并返回 zip 文件。在客户端,我有调用端点并将下载的 zip 文件保存到磁盘的代码。所有代码都会运行,但生成的文件比服务器上的 zip 文件大,如果我尝试打开生成的 zip 文件,则会收到“Windows 无法打开该文件,文件无效”。我究竟做错了什么?服务器代码:    [Route("projects/files/download")]    [HttpPost]    public ActionResult Post([FromForm] DownloadFileRequest request)    {               string filesPath = ...;        string zipName = ...;        if (!Directory.Exists(filesPath)) {`            return BadRequest("File path not found on server");        }        if (System.IO.File.Exists(zipName)) System.IO.File.Delete(zipName);        System.IO.Compression.ZipFile.CreateFromDirectory(filesPath, zipName);        byte[] fileBytes = System.IO.File.ReadAllBytes(zipName);        FileContentResult zipFile = File(fileBytes, "application/zip", fileName);        return Ok(zipFile);    }客户端代码:    Uri uri = new Uri("https://.../projects/files/download");    response = client.PostAsync(uri.ToString(), formContent).Result;    if (response.IsSuccessStatusCode)`    {        using (HttpContent content = response.Content)        {            Stream stream = content.ReadAsStreamAsync().Result;            string path = ...;            stream.Seek(0, SeekOrigin.Begin);            using (Stream streamToWriteTo = File.Open(path, FileMode.Create))            {                stream.CopyTo(streamToWriteTo);            }        }    }
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

不返回 Ok(zipFile),而是返回文件:

返回文件(fileBytes,“应用程序/zip”,文件名);


查看完整回答
反对 回复 2023-09-24
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信