簡體   English   中英

用Java下載盒子文件

[英]download box file in java

當我下載文件時,它總是拋出此異常:

org.apache.http.ConnectionClosedException:Content-Length分隔的消息正文的過早結束(預期:210846;已接收:0

我的代碼:

String fileid=attachment.getBoxfileid();
String sha1=attachment.getSha1();
String filename=attachment.getFilename();

final String clientid=ToolsUtils.getBOXcomConfig().get(ToolsUtils.CLIENTID);
final String clientsecret=ToolsUtils.getBOXcomConfig().get(ToolsUtils.CLIENTSECRET);
BoxOAuthToken authToken=this.boxuploadService.getTokenByClientId(clientid);
BoxClient boxClient=new BoxClient(clientid,clientsecret,null,null,new BoxConfigBuilder().build());
boxClient.authenticate(authToken);
boxClient.addOAuthRefreshListener(new OAuthRefreshListener() {

    @Override
    public void onRefresh(IAuthData authData) {
    boxuploadService.updateBoxAccessToken(clientid,authData.getAccessToken(),authData.getRefreshToken());
            }
    });
BoxDefaultRequestObject obj = new BoxDefaultRequestObject();
obj.getRequestExtras().setIfMatch(sha1);
DownloadFileRequest downloadFileRequest=new DownloadFileRequest(new     BoxConfigBuilder().build(), new BoxJSONParser(new BoxResourceHub()), fileid, obj);
out = response.getOutputStream();
InputStream inputStream=boxClient.getFilesManager().downloadFile(fileid, obj);
byte[] buffer = new byte[1024];
response.setContentType("application/octet-stream" );
response.setHeader( "Content-Disposition", "attachment; filename=\"" + filename + "\"" );

while((readCount = inputStream.read(buffer)) > 0) {
    out.write(buffer, 0, readCount);
}

out.flush();

看起來閱讀部分出了問題,在調用downloadFile(fildId,requestObject)時是否捕獲到任何異常?

我的代碼如下所示:

try {

    BoxDefaultRequestObject requestObject = new BoxDefaultRequestObject();

    inputStream = boxClient.getFilesManager().downloadFile(fileId,
            requestObject);

} catch (BoxRestException e) {
    e.printStackTrace();
} catch (BoxServerException e) {
    e.printStackTrace();
} catch (AuthFatalFailureException e) {
    e.printStackTrace();
}

您可以通過這種方式檢查InputStream對象是否正確生成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM