0

ember 应用程序运行在 rails API 之上。

用于身份验证它使用令牌标头(带有设计服务器端)

当请求将 .csv 添加到 URL 时,我有一个返回 CSV 的索引操作:

        respond_to do |format|
          format.json {json_response @custormer_info_requests.page(@page).per(@size)}
          format.csv {send_data @custormer_info_requests.to_csv, filename: "demandes.csv"}
        end

问题是这样的直接链接: <a href='/marketadmin_api/v1/customer_info_requests.csv?partner_id={{partner.id}}'>File</a>

由于没有 auth 标头而失败并显示 401。

您如何允许用户下载受保护的文件?

4

1 回答 1

0

你有几个选择:

  1. 使用 javascript 获取文件(您可以在此处阅读如何使用 jquery 下载二进制数据),然后使用FileSaver启动“下载”对话框。您可能想用按钮替换链接并在文件获取时显示一些微调器。如果文件不是太大,你也可以预取它,并且你 80% 确定用户会想要下载它。

    1a。如果前端已经有数据,您可以在客户端形成 csv(例如使用 papaparse 或this library)并使用 FileSaver 允许用户保存它。这样可以避免额外的请求。从 csv 字符串保存文件:saveAs(new Blob([csvString], { type: 'text/csv;charset=utf-8;' }), 'file-name.csv');

    1b。获取 json,在客户端将其转换为 csv 并使用 FileSaver 保存。

  2. 添加身份验证令牌作为获取参数以链接并教后端理解它

  <a href='/marketadmin_api/v1/customer_info_requests.csv?partner_id={{partner.id}}&auth={{token}}'>File</a>
于 2019-06-25T16:26:43.680 回答