我在从C#模型下载/导出XML文件到浏览器的本地机器时遇到了问题(我有它的前端)。但是,我可以将文件从C#模型下载/导出到XML,并将其保存在服务器上的目录中。
我使用了下面的代码:
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();
角度代码:
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,但不能在本地下载。
发布于 2019-03-11 21:12:15
您不能将任何内容直接保存到客户端计算机。您所能做的就是提供文件作为对请求的响应,然后通常会在客户机上提示一个下载对话框,允许用户选择将其保存在本地计算机上的某个位置。
@croxy链接到的是如何返回这样的响应。如果问题的答案是使用现有文件,则可以忽略该部分。我们的想法是返回一个byte[]
或stream
,而不管它实际上来自哪里。如果您是在内存中创建XML,那么您可以简单地执行如下操作:
return File(memoryStream.ToArray(), "application/xml", "file.xml");
发布于 2019-03-11 21:15:01
与其将数据序列化为文件,不如将其序列化为流。MemoryStream
并从您的操作返回一个File()
:
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);
}
https://stackoverflow.com/questions/55102205
复制相似问题