Java 从不同服务器下载csv文件

Java 从不同服务器下载csv文件,java,javascript,php,csv,Java,Javascript,Php,Csv,我想不出任何方法可以做到这一点,但我仍然有点好奇,是否有一些黑客。下面是一个场景: 有我的服务器X和不同的服务器Y。服务器Y根据输入参数生成各种报告,我的服务器X解析它们并使它们可供下载 因此,为了执行此操作,我可以访问服务器Y的JSON API,我可以在服务器X上轻松地使用PHP Curl,但我想将此负载移动到客户端,而不是在服务器X上加载。因为每个文件下载大约需要1到2秒(大小约为2–3MB及其CSV文件),每个用户可能有大约100-200个这样的文件要下载,如果大约有20个用户,这可能会

我想不出任何方法可以做到这一点,但我仍然有点好奇,是否有一些黑客。下面是一个场景:

  • 有我的服务器X和不同的服务器Y。服务器Y根据输入参数生成各种报告,我的服务器X解析它们并使它们可供下载
  • 因此,为了执行此操作,我可以访问服务器Y的JSON API,我可以在服务器X上轻松地使用PHP Curl,但我想将此负载移动到客户端,而不是在服务器X上加载。因为每个文件下载大约需要1到2秒(大小约为2–3MB及其CSV文件),每个用户可能有大约100-200个这样的文件要下载,如果大约有20个用户,这可能会使我的ServerX崩溃
所以我想把从不同服务器下载csv的负载转移到客户端。我试过使用小程序,但由于相同的跨源策略,它们无法工作。而javascript我想不出任何下载它们的方法,因为对于跨域问题没有任何可用的选项。因此,我愿意接受任何类似chrome扩展或任何类似的东西,它们可以在不涉及我的服务器的情况下完成这项工作

另外,如果我对服务器崩溃的假设不正确,请告诉我;我不确定,因为网络呼叫将被视为I/O,NIC卡可以支持多少线程

编辑

我希望我的web应用程序能够在不涉及我的服务器X的情况下自行从服务器Y下载文件。也就是说,我的web客户端应该能够在不涉及我的服务器的情况下直接从第三方服务器下载内容。

是CSV还是JSON?

不重要,不管怎样,你都有一个严重的问题需要解决。

我将假设API请求通常是相同的下载。

我建议在发出API请求时,将响应返回给用户,然后在本地保存

使用PHP获取CSV(或JSON)数据,从而消除跨源资源共享问题

在本地保存CSV时,需要为其指定一个包含参数的唯一文件名。文件名中的字符数很便宜。

在发出API请求之前,首先使用

if(file_exists($filename))
文件命名约定,使用API请求中相同的参数命名文件。

$param['parm1name'] = 'param1';
$param['parm2name'] = 'param2';
$param['parm3name'] = 'param3';
$param['parm4name'] = 'param4';
$param['parm5name'] = 'param5';
$filename = '';
$query = '?';
foreach ($param as $key => $value){
  $filename .= $value;
  $query .= "$key=$value&";
}
$filename .= '.csv';
if (file_exists($filename)){
  header('Content-Type: text/plain; charset=utf-8');  
  readfile($filename)
else{
   $query = substr($query,0,-1);  // remove trailing "&"
  // do API request and return data to user
  $fp = fopen($filename,'w');
  fwrite($fp,$data);
  fclose($fp);
}

无论如何,您的服务器Y应该提供一个文件,以便在客户端下载和生成报告。您希望从服务器Y中删除哪种负载?报告生成功能?不是从服务器Y,我不想从服务器Y删除任何负载,我希望我的服务器X不应干扰下载,因为用户登录到我的服务器而不是YRafael,我已经更新了问题描述,我认为之前有点混乱。谢谢你,我不想说1-2秒,我想知道文件的大小。1-2秒?文件一定很大。如果我错了,请纠正我。您希望在服务器Y上生成一个文件(文件格式是什么?二进制?),并在不使用服务器X的情况下直接提供给客户机。客户机应解析此文件并生成报告。我说得对吗?