powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись файла - определить окончание записи
12 сообщений из 37, страница 2 из 2
Запись файла - определить окончание записи
    #38892733
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Вопрос же не в файлах. А в том когда Вы дергаете callback на клиенте.
Если до того, как fileOut.close(); закончился, то Вы ССЗБ.
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38892746
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньеввадя,

Вопрос же не в файлах. А в том когда Вы дергаете callback на клиенте.
Если до того, как fileOut.close(); закончился, то Вы ССЗБ.
вот более полный код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 FileOutputStream fileOut;
            try {

                fileOut = new FileOutputStream("C:/workbook.xlsx");
                wb.write(fileOut);
                fileOut.close();
                fileOut.flush();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            System.out.println("File created!");
            webSocket_.send("xxx");вот тут идет сообщение клиенту о готовности сохранения файла, в ответ на это 

клиент делает
document.getElementById('download').click();
<a href="files/workbook.xlsx" download id="download" ></a>
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38892769
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньеввадя,

Вопрос же не в файлах. А в том когда Вы дергаете callback на клиенте.
Если до того, как fileOut.close(); закончился, то Вы ССЗБ.

в общем я и начинал с того
авторвопрос как определить что файл готов для считвания после сохранения?
иными словами : как определить что fileOut.close(); закончился?
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38892946
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrickвадя,

См. Create an excel file for users to download using Apache POI

ещё раз большое спасибо за ссылку !!!
работает великолепно (с небольшими переделками под конкретную реализацию)
на сервер идет запрос, с сервера файл в формате base64 (с необходимыми причиндалами в начале )

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
            ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
            wb.write(outByteStream);
            byte[] outArray = outByteStream.toByteArray();

            StringBuilder sb = new StringBuilder();
            sb.append("data:application/bin;base64,");
            sb.append(StringUtils.newStringUtf8(Base64.encodeBase64(outArray, false)));

            webSocket_.send(sb.toString());



на клиенте он принимается и строка подставляется в

Код: javascript
1.
2.
 $('#download').attr('href', p);
 document.getElementById('download').click();


Код: javascript
1.
<a href="" download="xxx.xlsx" id="download" ></a>


при необходимости можно и имя файла менять :)
проверено в хроме, монобраузерность? меня устраивает... :)
ЗЫ
если к серверу подключены 2 клиента (или более) можно с одного клиента (главного) дать команду на сохранение другому клиенту (подчинённому) ему, конечно, придется выбрать путь для сохранения.
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38892952
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кто-нибудь знает как в apache poi задать ширину колонки в экселе?
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38909237
usa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл пишется в C:/workbook.xlsx, а http запрос ссылается на files/workbook.xlsx
Как по мне не в ту директорию пишите.
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38909346
EDUARD_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
генерация файла происходить во время тыкания по ссылке.
после этого открываешь его и отдаешь клиенту с нужными http-заголовками.
т.е. после close() делай read() и отдавай его в выходной поток. ну тогда смысл тут в промежуточном файле? может сразу все байты отдавать в выходной поток?

глупость генерировать файл до кликания по ссылке.
а если клиент его не захочет качать?
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38909367
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня в 17334746 так и реализовано.
работает великолепно
единственный недостаток - хром не запрашивает о действии, если файл существует, а по умолчанию переименовывает (добавляет в конце в скобках цифры)
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38910818
EDUARD_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

открой для себя HTTP заголовки, отправь верный - и хром перестанет переименовывать файлы
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38911142
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD_2вадя,

открой для себя HTTP заголовки, отправь верный - и хром перестанет переименовывать файлы
подскажи как и где надо отправлять?
-у меня данные файла передаются с помощью websocket.
-нашел ответ на форуме по хрому - это фича хрома, говорять исправить нельзя.
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38928958
EDUARD_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

стандартно, когда веб-сервер отдает файл, должен быть такой заголовок:
авторContent-Disposition: attachment; filename="your_filename.txt"

в случае Веб-сокетов - не могу сказать.
...
Рейтинг: 0 / 0
Запись файла - определить окончание записи
    #38929182
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD_2вадя,

стандартно, когда веб-сервер отдает файл, должен быть такой заголовок:
авторContent-Disposition: attachment; filename="your_filename.txt"

в случае Веб-сокетов - не могу сказать.
тут дело не в заголовке,
а в тои что, хром при каждом сохранении с filename="your_filename.txt" не спрашивает, что делать если имена файлов совпадают, а автоматом добавляет к имени (NN) номер версии..
фишка хрома.
оно, конечно, не плохая, когда можно ей управлять.
но при разработке копится куча ненужных файлов, нужных лишь для проверки самого факта возможности скачать файл с сервера...
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись файла - определить окончание записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]