首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用.net核心API将XML文件下载到本地计算机

使用.net核心API将XML文件下载到本地计算机
EN

Stack Overflow用户
提问于 2019-03-11 20:49:08
回答 2查看 2.8K关注 0票数 1

我在从C#模型下载/导出XML文件到浏览器的本地机器时遇到了问题(我有它的前端)。但是,我可以将文件从C#模型下载/导出到XML,并将其保存在服务器上的目录中。

我使用了下面的代码:

代码语言:javascript
运行
复制
var gradeExportDto =  Mapper.Map<GradeExportDto>(responseGradeDto);
System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(gradeExportDto.GetType());
var path = _configuration.GetValue<string>(AppConstants.IMPORT_EXPORT_LOCAL_URL) + "\\"+ responseGradeDto.Code+"_"+DateTime.UtcNow.ToString("yyyy-MM-dd") + ".xml";
System.IO.FileStream file = System.IO.File.Create(path);
writer.Serialize(file, gradeExportDto);
file.Close();

角度代码:

代码语言:javascript
运行
复制
onExport(selectedData: any): void{
    this.apiService.post(environment.api_url_master, 'ImportExport/ExportGrade/', selectedData).subscribe(result => {
      this.translateService.get('GradeExportSuccess').subscribe(value => this.toastr.success(value));
    }, err => {
      this.toastr.error(err.message);
    });
  }

我需要帮助将此文件下载到运行浏览器的本地系统。如果我需要更多的信息,请让我知道。注意:我没有尝试下载现有的文件。我有模型在C#中,我需要转换成XML,然后下载到我的本地。但是,我可以将其转换为XML,但不能在本地下载。

EN

回答 2

Stack Overflow用户

发布于 2019-03-11 21:12:15

您不能将任何内容直接保存到客户端计算机。您所能做的就是提供文件作为对请求的响应,然后通常会在客户机上提示一个下载对话框,允许用户选择将其保存在本地计算机上的某个位置。

@croxy链接到的是如何返回这样的响应。如果问题的答案是使用现有文件,则可以忽略该部分。我们的想法是返回一个byte[]stream,而不管它实际上来自哪里。如果您是在内存中创建XML,那么您可以简单地执行如下操作:

代码语言:javascript
运行
复制
return File(memoryStream.ToArray(), "application/xml", "file.xml");
票数 0
EN

Stack Overflow用户

发布于 2019-03-11 21:15:01

与其将数据序列化为文件,不如将其序列化为流。MemoryStream并从您的操作返回一个File()

代码语言:javascript
运行
复制
public IActionResult GetXml()
{
    var gradeExportDto =  Mapper.Map<GradeExportDto>(responseGradeDto);
    var writer = new System.Xml.Serialization.XmlSerializer(gradeExportDto.GetType());
    var stream = new MemoryStream();
    writer.Serialize(stream, gradeExportDto);

    var fileName = responseGradeDto.Code + "_" + DateTime.UtcNow.ToString("yyyy-MM-dd") + ".xml";

    return File(stream.ToArray(), "application/xml", fileName);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55102205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档