|
WEB Передать файл с клиента на сервер | ☑ | ||
---|---|---|---|---|
0
dimm7310
12.08.15
✎
13:34
|
в продолжение темы WEB Передать десятки файлов с сервера на клиент
задача усложнилась, теперь нужно с веб клиента передать на сервер файл. Пытаюсь на клиенте поместить файл во временное хранилище и передать адрес на сервер, но выдает ошибку - "Не найден конструктор" пробовал на клиенте ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла)) я так понимаю, что ругается на "Новый ДвоичныеДанные" кто знает как обойти проблему ? |
|||
1
ДенисЧ
12.08.15
✎
13:44
|
Ну нету двоичных данных на веб-клиенте...
|
|||
2
wildivan
12.08.15
✎
16:11
|
Например так:
&НаКлиенте Процедура ПрикрепитьФайл(Команда) #Если ВебКлиент Тогда Если НЕ ПодключитьРасширениеРаботыСФайлами() Тогда УстановитьРасширениеРаботыСФайлами(); ПодключитьРасширениеРаботыСФайлами(); КонецЕсли; #КонецЕсли Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.Заголовок = "Выберите файл"; ДиалогОткрытияФайла.Показать(Новый ОписаниеОповещения("ОбработкаВыбораФайла",ЭтотОбъект)); КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбораФайла(Результат, Параметры) Экспорт Если Результат<>Неопределено Тогда ПутьКФайлу = Результат[0]; Объект.ИмяФайла = ДополнительныеОбъекты.ПолучитьИмяФайла(ПутьКФайлу); #Если НЕ ВебКлиент Тогда ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу); ПрикрепитьФайлСервер(ДвоичныеДанные); #Иначе ПомещаемыеФайлы = Новый Массив; ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу, "")); ПомещенныеФайлы = Новый Массив; Если НЕ ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор) Тогда Сообщить("Ошибка прикрепления файла: " + ОписаниеОшибки()); Иначе ПрикрепитьФайлСервер(ПомещенныеФайлы, Истина); КонецЕсли; #КонецЕсли КонецЕсли; КонецПроцедуры &НаСервере Процедура ПрикрепитьФайлСервер(Данные, ЭтоВебКлиент = Ложь) Если ЭтоВебКлиент Тогда АдресПрикрепленныйФайл = Данные[0].Хранение; ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл); Иначе ДвоичныеДанные = Данные; КонецЕсли; Об = РеквизитФормыВЗначение("Объект"); Об.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные); Об.Размер = ДвоичныеДанные.Размер(); Если НЕ ЗначениеЗаполнено(Об.Наименование) Тогда Об.Наименование = Об.ИмяФайла; КонецЕсли; Об.ДатаДобавления = ТекущаяДата(); Об.Записать(); ЗначениеВРеквизитФормы(Об, "Объект"); КонецПроцедуры |
|||
3
dimm7310
12.08.15
✎
16:21
|
(2) спавибо
|
|||
4
dimm7310
12.08.15
✎
17:17
|
(2) в каком случае процедура ПоместитьФайлы() может не отработать и будет вызвана ПрикрепитьФайлСервер() ?
|
|||
5
dimm7310
13.08.15
✎
09:09
|
пока закомментировал вызов ПрикрепитьФайлСервер().
при попытке принять файл на стороне сервере выдает ошибку "не правильный путь к файлу" пробовал так: &НаКлиенте Процедура Сформировать(Команда) #Если ВебКлиент Тогда Если НЕ ПодключитьРасширениеРаботыСФайлами() Тогда УстановитьРасширениеРаботыСФайлами(); ПодключитьРасширениеРаботыСФайлами(); КонецЕсли; #КонецЕсли ПомещенныеФайлы = Новый Массив; #Если НЕ ВебКлиент Тогда ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла); ПрикрепитьФайлСервер(ДвоичныеДанные); #Иначе ПомещаемыеФайлы = Новый Массив; ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяФайла, "")); Если НЕ ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор) Тогда Сообщить("Ошибка прикрепления файла: " + ОписаниеОшибки()); КонецЕсли; #КонецЕсли СформироватьНаСервере(ПомещенныеФайлы); &НаСервере Процедура СформироватьНаСервере(мсФайлы) АдресФайлаБазы = мсФайлы[0].Хранение; ФайлБазы = ПолучитьИзВременногоХранилища(АдресФайлаБазы); |
|||
6
dimm7310
13.08.15
✎
09:42
|
все разобрался, сам затупил и ниже еще раз пытался ПолучитьИзВременногоХранилища уже полученный файл
спасибо wildivan, за подсказку . Конечно лучше было кинуть ссылку на статью из которой приведен код, так бы сразу снялись первые вопросы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |