2016-11-13 73 views
1

我在下载pdf文件时使用了CN1CircleProgress库。如果pdf文件很小,它效果很好。但对于较大的PDF文件,例如30 Mb,该圈很快就会填充2-3倍,然后再开始下载到20-30%的下载站。下载的文件被破坏&无法在pdf查看器中打开。我已经在iOS设备上检查过它。在模拟器,它只是下载到一定比例,那么它停止下载更大尺寸的pdf文件(如30Mb)失败

downloadPdfButton.addActionListener((e) -> { 
    pdfUrlSelected = "http://roundtablenepal.org.np/uploadEpubs/57cbcc4e76258.pdf"; 
    pdfFileNameIdSelected = currentPdfSelected.get("magazine_title"); 

    filename = dir + sep; 
    filename = filename + pdfFileNameIdSelected + ".pdf"; 
    FileSystemStorage.getInstance().mkdir(dir); 
    Slider downloadSlider = new Slider(); 
    if (!FileSystemStorage.getInstance().exists(filename)) { 
     downloadPdfFromUrl(f, pdfUrlSelected, filename, true, downloadSlider, findCancelDownload(f)); 
    } 
}); 

private boolean downloadPdfFromUrl(Form f, String url, final String fileName, boolean storage, final Slider slider, Button cancel) { 
    crPdf = new ConnectionRequest(); 
    crPdf.resume(); 
    crPdf.setPost(false); 
    crPdf.setDuplicateSupported(true); 
    crPdf.setFailSilently(true); 
    crPdf.setUrl(url); 
    crPdf.setTimeout(15000); 
    crPdf.setDestinationFile(fileName); 

    final CircleFilledProgress p = new CircleFilledProgress(); 
    p.setProgress(0); 


    f.add(BorderLayout.CENTER, p); 

    NetworkManager.getInstance().addProgressListener(new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      if (evt instanceof NetworkEvent) { 
       NetworkEvent e = (NetworkEvent) evt; 
       if (e.getProgressPercentage() >= 0) { 
        slider.setText(e.getProgressPercentage() + "%"); 
        slider.setProgress(e.getProgressPercentage()); 
       } 
      } 
     } 
    }); 

    slider.addDataChangedListener(new DataChangedListener() { 

     @Override 
     public void dataChanged(int type, int index) { 
      p.setProgress(index); 
     } 
    }); 

    NetworkManager.getInstance().addToQueueAndWait(crPdf); 

    cancel.addActionListener((e) -> { 
     crPdf.kill(); 
    }); 

    return crPdf.getResponseCode() == 200; 
} 

回答

0

我建议打开网络监视器,我猜你得到一个重定向其更新进度,然后重定向导致一个错误页面由于某种原因。