2017-10-31 12 views
2

RESTEasyベースのWebサービスからApache XSSFを使用して生成されたxlsxファイルをダウンロードしようとしています。Webサービスからxlsxをダウンロードできません

私は、ファイルをダウンロードすることができますが、二重開くようにクリックしたときに、そのファイルがopenendすることができないと言う。

以下

enter image description here

は、ソースコードである:

Webサービスコントローラー:

@GET 
@Path(/download) 
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response downloadFile() { 

    ByteArrayOutputStream baos = myService.processGbiValidationExceptions(); 

    ResponseBuilder response = Response.ok((Object) baos.toByteArray()); 
    response.header("Content-Disposition", "attachment;filename=My_File.xlsx"); 
    return response.build(); 
} 

サービス:

public ByteArrayOutputStream processGbiValidationExceptions() { 
    XSSFWorkbook workbook = new XSSFWorkbook(); 

    // code to write to workbook 


    // Create stream 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    try { 
     workbook.write(baos); 
    } catch (IOException e) { 
     LOGGER.error("Error occurred while writing workbook to stream", e); 
     throw new IptException(e); 
    } 

    return baos; 
} 

私はここで間違っていますか?ありがとう

P .:私はMacです!

答えて

1

以前にファイルのダウンロードに使用していたクライアントサイドコードにはほとんど問題がありませんでした。今、私はdownload.jsを使用しており、それは動作します。以下は

はコードです:

@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") 

乾杯

import download from 'downloadjs';  
    . 
    . 
    . 
    fetch(FETCH_URL, { 
     method: 'GET', 
     dataType: 'json', 
     credentials: 'include' 
    }).then(response => { 
     if(response.status === 200) { 
      return response.blob(); 
     } 
     },() => { 
     // when error do something 
     } 
    ).then(
     // Following line helps download 
     blob => download(blob, "someexcel.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") 
    ) 

また、MIMEタイプがxlsxファイルをダウンロードするためにapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetに設定する必要があります

関連する問題