Pobranie content-Lenght z OutputStream

Pobranie content-Lenght z OutputStream
AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

Witam, mam pewien problem nad którym głowię się którąś godzinę. Mianowicie chodzi mi o to, w jaki sposób pobrać ContentLenght z pobieranego z FTP pliku.

kod Stremingu. Chciałbym jakoś pobrać z niego wielkość pliku i przekazać do

Kopiuj

protected Integer contentLenght;


response.getContentLenght(contentLenght)

który użyje w metodzie setHeaders.

Kopiuj
 protected void doActualStreamingFromFtp() throws IOException {
        OutputStream outputStream = null;
        try {
            outputStream = response.getOutputStream();
            IOUtils.copyLarge(ftpInputStream, outputStream);
        } catch (ClientAbortException e) {
            logger.warn(getClass(), "client stopped download file, ordersEntity = %s", ordersEntity);
        } catch (IOException e) {
            logger.warn(getClass(), "client stopped download or file is corrupted, ordersEntity = %s", ordersEntity);
        } finally {
            StreamUtils.closeStreams(ftpInputStream, outputStream);
        }
    }
krzysiek050
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1272
0
Kopiuj
long contentLength = IOUtils.copyLarge(ftpInputStream, outputStream);
AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

serio ? :D i mogę to przedstawić jako INT-a na potrzeby getContentLenght ?

AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

A co jeśli potrzebuję contentLenth wcześniej ?

Który header świadczy o tym że plik jest do pobrania zamiast to otwarcia się w przeglądarce ? bo jeśli daje metodą setHeaders po metodzie doActualStreamingFromFtp to otwiera mi się binarnie w przeglądarce zamiast pobierać jako plik. Więc wypadałoby wcześniej do response dać sygnał że plik ma się pobierać a nie otwierać.

Czyto parametr

Kopiuj
String contentType = "application/force-download";

?

Kopiuj
  protected void setHeaders() {
        String secureFileName = getSecureFileName();
        response.setHeader(Configuration.CONTENT_DISPOSITION_HEADER, "attachment;filename=" + secureFileName);
        response.setHeader("Content-Transfer-Encoding", "binary");


        String contentType = "application/force-download";
        if ("epub".equalsIgnoreCase(FilenameUtils.getExtension(secureFileName))) {
            contentType = "application/epub";
        }
        response.setContentType(contentType);
        response.setContentLength((int) contentLenght);
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
    }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.