title: React/Redux download file
body: <p>I need to download a file from the server when a button is clicked.</p>
  
  <p>I created a MaterialUI button and on its onclick callback i call an action of the container component <strong>connected</strong>. </p>
  
  <p>The action is asynchronous and does an ajax POST:</p>
  
  <pre><code>export const onXlsxClick = () =&gt; dispatch =&gt; {
      const urlParams = {
          filters: {
              aggregation: 'macro_area',
              chart_resolution: '1_hour',
              chart_from: '1478080363',
              chart_to: '1477993963'
          },
          labels: ['PROVA1', 'PROVA2'],
          series: [
              {
                  label: null,
                  timestamp: 1478080363,
                  values: [123, 345]
              },
              {
                  label: null,
                  timestamp: 1477993963,
                  values: [153, 3435] 
              }
          ]
      };
      return $.ajax({
          url:'/rest/export/chart/xlsx',
          type: 'POST',
          dataType: 'application/json',
          contentType: 'application/json',
          data: JSON.stringify(urlParams)
      })
      .done(data =&gt; {
         console.log('success');
      })
      .fail(error =&gt; {
          console.log(error);
      });
  };
  </code></pre>
  
  <p>The server receive the request and handle it correctly through this REST service:</p>
  
  <pre><code>@POST
  @Path("xlsx")
  @Produces("application/vnd.ms-excel")
  public Response getXlsx(ChartExportRequest request) {
      ResponseBuilder responseBuilder;
      ChartExportRequestDTO reqDto = null;
      try {
          reqDto = parseDTO(request);
          checkRequestDTO(reqDto);
          ExportDTO dto = getXlsxProvider().create(reqDto);
  
          responseBuilder = Response.ok(dto.getFile())
                  .header("Content-disposition", "attachment;filename=" + dto.getFileName());
      }
      catch(Exception e) {
          logger.error("Error providing export xlsx for tab RIGEDI with request [" + (reqDto != null ? reqDto.toString() : null) + "]", e);
          responseBuilder = Response.serverError().entity(e.getMessage());
      }
      return responseBuilder.build();
  }
  </code></pre>
  
  <p>The problem is that the response arrives correctly to the client but then nothing happens: I am expecting that the browser shows the download dialog (example: in chrome I expect the bottom bar of downloads to appear with my file).</p>
  
  <p>What am I doing wrong?</p>