Имя: Пароль:
1C
1C 7.7
v7: Как отправить файл на сервер из 1с7 в сыром формате
0 BalBess
 
20.02.13
09:54
Нужно отправить jpg файл без перекодировки, т.е. в сыром виде.
Есть обработка, работает через v7plus. Хочу чтобы без использования компонент. Сама компонента через что работает?
1 zak555
 
20.02.13
09:55
аутлук
2 Тьма
 
20.02.13
10:01
3 Rie
 
20.02.13
10:03
(0) "Без компонент"? Поскольку 7-ка не имеет собственных средств работы с почтой, тебе всё равно придётся использовать что-то стороннее. А ВК это или ActiveX - дело десятое.
4 BalBess
 
20.02.13
10:06
Мне нужно отправить по HTTP на сервер, например 1000 картинок
Сейчас используется v7plus.ОтправитьДляОбработки()
т.е. не почту
5 BalBess
 
20.02.13
10:12
Нужно чтобы запрос был такой
POST /admin/exchange/auto/?type=catalog&mode=file&filename=import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg HTTP/1.1

(заголовки пропущу)

(далее пошли данные jpg файла, "сырые", без кодировки)
яШяа JFIF..
(символы не вставляются, в общем просто данные файла)
6 Rie
 
20.02.13
10:16
(4) Для отправки почты - есть куча ВК. Используй их - и будет счастье.
7 Тьма
 
20.02.13
10:16
8 BalBess
 
20.02.13
10:24
WinhttpRequest - как с помощью его прикрепить файл? Без кодировки.
Что еще есть, кроме WinhttpRequest
9 BalBess
 
21.02.13
07:13
Есть у кого мысли?
WinhttpRequest  - не подходит, т.к. 1с7 не умеет работать с двоичными данными, я не смогу вставить тело в запрос

гуру, какие еще есть варианты?
10 big
 
21.02.13
07:25
(0) Почему возникла такая "хотелка"? Что-то рабтает не так, как хочется или просто желание "не хочу вот так хочу вот эдак" ?
11 BalBess
 
21.02.13
07:52
"не хочу вот так хочу вот эдак" - что-то типа того :)
просто база для обмена инфой с сайтом, не хотелось-бы прикручивать v7plus только из-за V7HTTPReader
хотел создать универсальную обработку без использования компонент, XML уже победил
Сама библиотека v7plus через какой объект работает?
12 big
 
22.02.13
05:16
(11) вот работает оно - и пусть работает! Только время своё попусту тратишь )))
13 ЧеловекДуши
 
22.02.13
05:45
(9) Через 1С++ умеет :)
14 ЧеловекДуши
 
22.02.13
05:46
(11) wiki:Дон_Кихот - он тоже с мельницами сражался :)
15 ЧеловекДуши
 
22.02.13
05:48
+ Хотя вот этот расклад, куда практичней http://lurkmore.to/Донки-хот
16 BalBess
 
22.02.13
09:50
для меня сейчас это вопрос принципа ))
тут накидал скрипт (не пинайте):
Функция SendFileToServer(Путь)
   Попытка
       Скрипт = "
           |Function SendFileToServer()
           |    Set httpRequest = CreateObject(""WinHttp.WinHttpRequest.5.1"")
           |    URL = ""http://localhost/admin/exchange/auto/""
           |    httpRequest.Open ""POST"", URL, False
           |    ' ставим нужные заголовки
           |    httpRequest.setRequestHeader(""Accept"", ""text/html, */*"");
           |    VarBody = ""type=catalog&mode=file&filename=import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg""
           |    
           |    ' тут надо как-то к VarBody прицепить данные файла в сыром виде
           |    ' может через FSO или ADODB.Stream ?
           |
           |    httpRequest.Send(VarBody)
           |   ' обработка ошибок
           |    Select Case httpRequest.Status
           |   Case 200
           |      SendFileToServer = httpRequest.ResponseText
           |    Case Else
           |      SendFileToServer = httpRequest.StatusText
           |    End Select
           |End Function
       |";
       ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
       ScrptCtrl.Language="vbscript";
       ScrptCtrl.AddCode(Скрипт);
       Возврат ScrptCtrl.Run("SendFileToServer");
   Исключение
       Возврат ОписаниеОшибки();
   КонецПопытки;
КонецФункции

Вопросов куча
1) как прекрепить к телу содержимое файла (перед отправкой)
2) как передать в функцию список значений, с путями файлов для отправки
3) нужно-ли закрывать соединение после отправки
4) будет-ли все это работать
17 Туц
 
22.02.13
12:08
Через ado.stream
18 BalBess
 
22.02.13
12:35
мож у кого есть примерчик..
оказалось немного попроще, мне просто надо "вложить" файл в send(File), т.е.

httpRequest.Send(File)

где мне взять File?? может как-то
Set FSO = CreateObject(""Scripting.FileSystemObject"")
Set File = FSO.GetFile(""" + Путь + """)
19 BalBess
 
25.02.13
10:30
Все! заработало. скрипт (мож кому пригодится)

Function SendFileToServer()
   'Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
   Set httpRequest = CreateObject("MSXML2.XMLHTTP")
   URL = "http://localhost/admin/exchange/auto/?type=catalog&mode=file&filename=import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg"
   httpRequest.Open "POST", URL, False
   Accept = "text/html"
   Enctype = "multipart/form-data"
   httpRequest.setrequestheader "Accept", Accept
   httpRequest.setrequestheader "Content-type", Enctype

   Path = "C:\Temp\dog.jpg"
   strInfo = "error"
   Dim Stream
   Set Stream = CreateObject("ADODB.Stream")
   Stream.Type = 1
   Stream.Mode = 3
   Stream.Open
   Stream.LoadFromFile Path
   If Err.Number <> 0 Then
       SendFileToServer = Err.Number
       Exit Function
   End If
   Data = Stream.Read
   
   httpRequest.Send Data

   Select Case httpRequest.Status
   Case 200
       strInfo = httpRequest.ResponseText
   Case Else
       strInfo = httpRequest.StatusText
   End Select
   SendFileToServer = strInfo    
End Function

Осталось понять как в него передать список значений с именами и путями файлов из 1С
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.