|
возврат файла в браузере через http-соединение | ☑ | ||
---|---|---|---|---|
0
olo_lo1
13.03.17
✎
09:29
|
Подскажите пожалуйста, следующий момент
через GET запрос в браузере подкл к базе 1С, там по передаваемым параметрам формируется отчет в Эксель, после чего этот файл передаю через возврат. Но как я понимаю он передается через двоичные данные Как сделать так что бы в браузере этот файл можно было прямо непосредственно скачать, заранее спасибо за ответ. |
|||
1
Андрюха
13.03.17
✎
09:39
|
То есть надо чтобы после запроса к 1С в браузере появилось окно с файлом Excel и вариантами действий Открыть/Скачать?
|
|||
2
olo_lo1
13.03.17
✎
09:51
|
(1) да, все верно
|
|||
3
Андрюха
13.03.17
✎
09:55
|
||||
4
olo_lo1
13.03.17
✎
10:17
|
(3) туговат я в этом. Т.е. мне нужно из 1С этот ответ отправить ? А что делать с самим файлом, ничего не понял
<?php $file = $_GET['file'].".jpg"; header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file); exit; ?> |
|||
5
olo_lo1
13.03.17
✎
11:10
|
хеееелп
|
|||
6
Fragster
гуру
13.03.17
✎
11:11
|
(5) 8 заголовков и двоичные данные файла
|
|||
7
Андрюха
13.03.17
✎
11:15
|
Как файл из 1С обратно в браузер передаешь?
|
|||
8
omgwtf
13.03.17
✎
11:16
|
(6) скорее всего достаточно Content-Disposition, остальное 1с сама сгенерит
|
|||
9
olo_lo1
13.03.17
✎
11:28
|
(5) блин я реально не понимаю, можете с примером написать.
Я должен в переменную ответ запихнуть этот кусок - это не проблема, а далее просто двоичные данные что ли ? |
|||
10
Fragster
гуру
13.03.17
✎
11:30
|
HTTPСервисОтвет.УстановитьТелоИзДвоичныхДанных (HTTPServiceResponse.SetBodyFromBinaryData)
HTTPСервисОтвет (HTTPServiceResponse) УстановитьТелоИзДвоичныхДанных (SetBodyFromBinaryData) Синтаксис: УстановитьТелоИзДвоичныхДанных(<Данные>) Параметры: <Данные> (обязательный) Тип: ДвоичныеДанные. Двоичные данные, которые будут записаны в тело HTTP-ответа. Описание: Устанавливает тело HTTP-ответа из двоичных данных. Доступность: Сервер, толстый клиент. См. также: HTTPСервисОтвет, метод УстановитьТелоИзСтроки -------------------------------------------------------------------------------- Методическая информация |
|||
11
olo_lo1
13.03.17
✎
11:52
|
(10) Примерно так ?
Ответ.УстановитьТелоИзСтроки(ТекстPHP); Ответ.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ИмяФайла)); |
|||
12
olo_lo1
13.03.17
✎
11:53
|
где
ТекстРНР = "<?php $file = $_GET['file'].".jpg"; header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file); exit; ?>"; |
|||
13
Fragster
гуру
13.03.17
✎
12:12
|
(12) нет
|
|||
14
Fragster
гуру
13.03.17
✎
12:12
|
текст пхп - это пример отдачи файла на языке пхп
|
|||
15
olo_lo1
13.03.17
✎
14:20
|
(14) тогда ты не понял что я хочу. Я именно хочу через браузер получить файл.
|
|||
16
olo_lo1
13.03.17
✎
14:26
|
(15) + в браузере в строке адреса вбиваю нужную строку, 1С отрабатывает этот http-Запрос и возвращает файл, а я хочу именно в браузере его качнуть.
|
|||
17
polosov
13.03.17
✎
14:32
|
(16) ИмяВыходногоФайла = ПолучитьимяВременногоФайла("zip");
ПутьВременныхФайлов = КаталогВременныхФайлов(); ПутьДляРаспаковки = ПутьВременныхФайлов + "UnzipOrderData"; Соединение = Новый HTTPСоединение("ДоменТвоегоСайта/Exchange"); Попытка Соединение.Получить("GetOrders?id=3453453453_ид_какой_то_там", имяВыходногоФайла); Исключение ЗаписьЖурналаРегистрации( "Обмен заказами с сайтом", УровеньЖурналаРегистрации.Ошибка, , , НСтр("ru = 'Возникла ошибка HTTP-соединения'")); Возврат; КонецПопытки; УдалитьФайлы(ПутьДляРаспаковки,"*.*"); ЗипФайл = Новый ЧтениеZipФайла(ИмяВыходногоФайла); ЗипФайл.ИзвлечьВсе(ПутьДляРаспаковки); |
|||
18
Stepa86
13.03.17
✎
14:39
|
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзДвоичныхДанных( двДанные ); // заставляем браузер показать окно сохранения файла Ответ.Заголовки.Вставить("Content-Type", "application/xlsx"); Ответ.Заголовки.Вставить("Content-Disposition", "attachment; filename=" + КодироватьСтроку( "Price.xlsx", СпособКодированияСтроки.КодировкаURL)); |
|||
19
polosov
13.03.17
✎
14:40
|
ДоменТвоегоСайта/Exchange/GetOrders?id=3453453453_ид_какой_то_там
А это вбиваешь в браузер, если хочешь руками файло получить |
|||
20
polosov
13.03.17
✎
14:40
|
+(19) Ну им по аналогии с этим делаешь свое. Могут быть нюансы, надо у сайтовиков узнавать
|
|||
21
olo_lo1
13.03.17
✎
15:03
|
(18) спасибо, большое!!! все получилось.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |