当前位置: 首页 > 面试题库 >

从Angular JS中的Web API下载csv文件

马阳曦
2023-03-14
问题内容

我的API控制器返回的是csv文件,如下所示:

    [HttpPost]
    public HttpResponseMessage GenerateCSV(FieldParameters fieldParams)
    {
        var output = new byte[] { };
        if (fieldParams!= null)
        {
            using (var stream = new MemoryStream())
            {
                this.SerializeSetting(fieldParams, stream);
                stream.Flush();
                output = stream.ToArray();
            }
        }
        var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(output) };
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "File.csv"
        };
        return result;
    }

我的angularjs将发送和接收csv文件如下所示:

$scope.save = function () {
            var csvInput= extractDetails();

            // File is an angular resource. We call its save method here which
            // accesses the api above which should return the content of csv
            File.save(csvInput, function (content) {
                var dataUrl = 'data:text/csv;utf-8,' + encodeURI(content);
                var hiddenElement = document.createElement('a');
                hiddenElement.setAttribute('href', dataUrl);
                hiddenElement.click();
            });
        };

在chrome中,它将下载一个名为,document但没有文件扩展名的文件。该文件的内容为[Object object]

在IE10中,没有下载任何内容。

我该怎么做才能解决此问题?


问题答案:

像这样尝试:

File.save(csvInput, function (content) {
    var hiddenElement = document.createElement('a');

    hiddenElement.href = 'data:attachment/csv,' + encodeURI(content);
    hiddenElement.target = '_blank';
    hiddenElement.download = 'myFile.csv';
    hiddenElement.click();
});


 类似资料:
  • 问题内容: 我使用nodeJS程序作为服务器,使用AngularJS Web应用程序作为客户端。 要创建CSV,我正在使用“ express-csv”库(https://www.npmjs.com/package/express- csv ) 这是我的服务器端代码: 定义: 获取代码: 这是我的客户端代码: 不用说它到达了服务器,其他一切都工作正常,但是我找不到下载CSV的方法。请帮助。 ps 请

  • 运行上述代码后出现以下错误。请帮忙做这件事。。正在将源和目标文件名作为S3属性中的参数传递。。。 在处理上述异常时,发生了另一个异常: 回溯(最后一次调用):文件“C:\Cloudtail\CT\SQL Scripts\python\GRN\u S3\u dwnld.py”,第17行,除了botocore.exception.ClientErrors as e:NameError:未定义名称“bo

  • 我正在尝试将html表下载为cvs文件。我的代码正在工作,但是,它正在下载一个名为“未知”的文件,没有扩展名。csv'。如果我手动添加扩展名,csv文件将正确显示除第一行之外的所有内容,该行还包含html代码(请参见所附图片) 我做错了什么? 以下是脚本:

  • 问题内容: 我试图允许用户下载包含其操作定义的数据的CSV文件。该文件不存在,它是动态创建的。如何在Flask中做到这一点? 问题答案: 使用生成数据并传输响应。使用写入内存缓冲区,而不是生成中间文件。 如果该generate函数需要从current中获取信息request,则应使用修饰stream_with_context,否则您将收到“在外部请求上下文中工作”错误。其他所有内容保持不变。

  • 我试图允许用户下载一个CSV文件,其中包含由其操作定义的数据。该文件不存在,它是动态创建的。我怎么能在烧瓶里做这个?

  • 我正在尝试使用改造从服务器下载文件。使用HttpLoggingInterceptor我尝试记录正在发生的事情。我可以找到文件名。但是响应正文是空的。 我是使用改造的新手。有人能指出我犯错的正确方向吗? 改进客户端界面: } Java呼叫: 日志中的响应: