FTPClient с JSF 2.2.2

У меня есть старый проект, и я очень потерян.

Я загружаю файл с FTP, но он не загружается полностью, а генерируется до полного завершения.

Каждый раз, когда я даю скачать, он разного размера и очень уступает своему реальному размеру.

FTPClient ftpClient = new FTPClient();
    ftpClient.connect("xxxx");
    ftpClient.login("xxx", "xxxx");
    ftpClient.enterLocalPassiveMode();
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    ftpClient.changeWorkingDirectory("/");

    InputStream in = ftpClient.retrieveFileStream(consentimiento.getRutaFichero());
    BufferedInputStream objLector = new BufferedInputStream(in);

    FacesContext objContexto = FacesContext.getCurrentInstance();
    HttpServletResponse response = (HttpServletResponse) objContexto.getExternalContext().getResponse();

    String contentType = Utilidades.obtenerTipoDocumento("wav");
    response.setContentType(contentType);
    response.setContentLength(in.available());
    response.setHeader("Content-disposition", "attachment; filename=\"" + consentimiento.getNombreFichero() + "\"");

    BufferedOutputStream objGrabador = new BufferedOutputStream(response.getOutputStream());

    // Traspasar el contenido del fichero al objeto response
    for (int data; (data = objLector.read()) != -1;) {
        objGrabador.write(data);
    }

    objGrabador.flush();
    objGrabador.close();
    objLector.close();

    objContexto.responseComplete();

person Jose    schedule 21.05.2019    source источник
comment
Итак, если вы используете фиксированный локальный файл сервера (поэтому без ftp) и загружаете его через jsf, он работает?   -  person Kukeltje    schedule 21.05.2019
comment
Где вы на самом деле записываете файл?   -  person Steve Smith    schedule 21.05.2019
comment
@stevesmith: оп пишет это здесь: objGrabador.write(data);   -  person Kukeltje    schedule 21.05.2019
comment
@Kukeltje Да, но, похоже, он записывает не в файл, а в поток. Кажется, это больше похоже на FTP-прокси или что-то в этом роде?   -  person Steve Smith    schedule 21.05.2019
comment
Я делаю загрузку, но делаю загрузку файла до его завершения.   -  person Jose    schedule 21.05.2019
comment
Вы можете попробовать вывести значение data на экран и посмотреть, как оно соотносится с фактическими данными, которые вы ожидаете.   -  person Steve Smith    schedule 21.05.2019
comment
Что означает @SteveSmith, так это попытаться прочитать файл с FTP на ваш сервер, а затем на втором этапе записать содержимое файла с вашего сервера конечному пользователю. Если это работает, вы сузили круг вопросов. Если это не сработает, вы тоже сузили круг вопросов. Отладка... исследование основных причин,   -  person Kukeltje    schedule 21.05.2019