powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBS upload Files on HTTP server
22 сообщений из 47, страница 2 из 2
VBS upload Files on HTTP server
    #38267886
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyВ топе к этому адресу прилеплялось имя файла.

А второй вариант надо раскуривать подробнее. Покажите заголовки post'а, который успешно отправил FF.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38267910
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то content-type запроса не видно.

Скачайте программу fiddler2, она мониторит http-запросы. Сделайте загрузку через FF и скрипт, переведите режим отображения контента в фидлере в raw и сравните тексты.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268123
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyЧто-то content-type запроса не видно.

Скачайте программу fiddler2, она мониторит http-запросы. Сделайте загрузку через FF и скрипт, переведите режим отображения контента в фидлере в raw и сравните тексты.
вот, что получилось: это RAW после запуска программы
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268128
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Monz,

это RAW после загрузки через FF
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268130
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Monz, список процессов
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268157
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно добавить заголовок authorisation и на всякий случай referrer, в остальном отличия не принципиальные.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268159
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Authori z ation и Referrer, блин.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268181
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112Monz,

тут брал - Class WebFormClass со "свистелками и ..." :)
красссиво и проверенно-рабочая "штука"

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
'Описание класса WebFormClass 
    
'Пример создания: "Set WebForm = New WebFormClass" 
    
'Form.Action             ' Свойство - URL на который будут отправлены данные. (чтение/запись) 
'Form.AddField           ' Процедура - Добавление поля. 
'Form.AddFile            ' Процедура - Добавление файла. 
'Form.Boundary           ' Свойство - Разделитель между данными (чтение) 
'Form.Enctype            ' Свойство - Тип кодирования формы (Для отправки полей - "application/x-www-form-urlencoded". Для отправки полей и файлов - "multipart/form-data") (чтение/запись) 
'Form.Method             ' Свойство - Метод отправки данных (GET / POST) 
'Form.VarBody            ' Свойство - Сформированные данные для отправки (чтение/запись) 

'Пример отправки файла на сайт http://www.zalil.ru 
    
Dim WebForm 
'/// Создаём новый класс формы 
Set WebForm = New WebFormClass 
'/// Указываем куда будем отправлять данные 
WebForm.Action = "http://www.zalil.ru/upload/" 
'/// Устанавливаем метод передачи POST 
WebForm.Method = "POST" 
'/// Для того чтобы передались файлы устанавливаем тип кодирования multipart/form-data 
WebForm.Enctype = "multipart/form-data" 
'/// Добавляем файл 
WebForm.AddFile "file", "C:\boot.ini" 
'/// Запускаем процедуру отправку     
Submit WebForm

Sub Submit(WebForm) 
    '/// Создаём объект отправки данных 
    Dim XMLHTTP 
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP") 
    '/// Открываем соединение с URL 
    XMLHTTP.Open WebForm.Method, WebForm.Action, False ', Login, Pass  
    '/// Если тип передачи данных POST, то добавляем к пакету заголовки 

    '/// Если отправляем с кодированием "multipart/form-data", то добавляем информацию о разделителе данных 
    If WebForm.Method = "POST" Then XMLHTTP.setrequestheader "Content-type", WebForm.Enctype '& "; boundary=" & WebForm.Boundary 
    
    '/// Отправляем запрос 
    XMLHTTP.Send WebForm.VarBody 
    '/// Смотрим статус ответа 
    Select Case XMLHTTP.Status 
    '/// Если 200 - OK. Данные переданы успешно 
    Case 200 
        Dim InternetExplorer 
        Set InternetExplorer = CreateObject("InternetExplorer.Application") 
        InternetExplorer.Visible = True 
        InternetExplorer.Navigate "about:blank" 
        Do 
                        WScript.Sleep 100 
        Loop Until InternetExplorer.readystate = 4 
        InternetExplorer.document.write XMLHTTP.responsetext 
    Case Else 
        MsgBox XMLHTTP.Status & " " & StatusText, vbCritical, "Ошибка при передаче данных !" 
    End Select 
End Sub 


'/// Класс формы 
Class WebFormClass
    '/// Класс формы
    Private Fields, Files
    Private PropertyEnctype, PropertyMethod, PropertyBoundary, PropertyAction

    Private Sub Class_Initialize()
        Fields = Array()
        Files = Array()
        PropertyEnctype = "application/x-www-form-urlencoded"
        PropertyMethod = "GET"
        PropertyBoundary = String(27, "-") & GenerateBoundary
        PropertyAction = "about:blank"
    End Sub

    Public Property Let Action(Value)
        PropertyAction = Value
    End Property

    Public Property Get Action()
        Action = PropertyAction
        If PropertyMethod = "GET" Then
            Dim Params
            Params = VarBody
            If VarBody <> "" Then Action = Action & "?" & Params
        End If
    End Property

    Public Property Get Boundary()
        Boundary = PropertyBoundary
    End Property

    Public Property Get Method()
        Method = PropertyMethod
    End Property

    Public Property Let Method(Value)
        Value = UCase(Value)
        If Value = "GET" Or Value = "POST" Then PropertyMethod = Value
    End Property

    Public Property Get Enctype()
        Enctype = PropertyEnctype
        If PropertyEnctype = "multipart/form-data" Then Enctype = Enctype & "; boundary=" & PropertyBoundary
    End Property

    Public Property Let Enctype(Value)
        Value = LCase(Value)
        If Value = "multipart/form-data" Or Value = "application/x-www-form-urlencoded" Then PropertyEnctype = Value
    End Property

    Public Sub AddField(Name, Value)
        ReDim Preserve Fields(UBound(Fields) + 1)
        Fields(UBound(Fields)) = Array(Name, Value)
    End Sub

    Public Sub AddFile(Name, Value)
        ReDim Preserve Files(UBound(Files) + 1)
        Files(UBound(Files)) = Array(Name, Value)
    End Sub
      

    Public Property Get VarBody()
        If PropertyMethod = "POST" And PropertyEnctype = "multipart/form-data" Then
            Const DefaultBoundary = "--"
            Dim Stream
            Set Stream = CreateObject("ADODB.Stream")
            Stream.Type = 2
            Stream.Mode = 3
            Stream.Charset = "Windows-1251"
            Stream.Open
            
            Dim FieldHeader, FieldsBody
            
            For Each Field In Fields
                FieldHeader = "Content-Disposition: form-data; name=""" & Field(0) & """"
                FieldsBody = FieldsBody & DefaultBoundary & PropertyBoundary & vbCrLf & FieldHeader & vbCrLf & Field(1) & vbCrLf
            Next
            
            Stream.WriteText FieldsBody
            
            Dim FileHeader
            
            For Each File In Files
                If LoadFile(File(1), Data) Then
                    FileHeader = DefaultBoundary & Boundary & vbCrLf & "Content-Disposition: form-data; name=""" & File(0) & """; filename=""" & File(1) & """" & vbCrLf & "Content-Type: octet/stream" & vbCrLf & vbCrLf
                    Stream.WriteText FileHeader
                    Stream.Position = 0
                    Stream.Type = 1
                    Stream.Position = Stream.Size
                    Stream.write Data
                    Stream.Position = 0
                    Stream.Type = 2
                    Stream.Position = Stream.Size
                End If
            Next
            
            Stream.Position = 0
            Stream.Type = 2
            Stream.Position = Stream.Size
            Stream.WriteText vbCrLf & DefaultBoundary & PropertyBoundary & DefaultBoundary
            
            Stream.Position = 0
            Stream.Type = 1
            
            VarBody = Stream.Read
        Else
            For Each Field In Fields
                VarBody = VarBody & URLEncode(Field(0)) & "=" & URLEncode(Field(1)) & "&"
            Next
            For Each File In Files
                VarBody = VarBody & URLEncode(File(0)) & "=" & URLEncode(File(1)) & "&"
            Next
            If Len(VarBody) > 0 Then VarBody = Left(VarBody, Len(VarBody) - 1)
        End If
    End Property

    Private Function URLEncode(Data)
        Dim CharPosition, CharCode
        For CharPosition = 1 To Len(Data)
            CharCode = Asc(Mid(Data, CharPosition, 1))
            If CharCode = 32 Then
                URLEncode = URLEncode + "+"
            ElseIf (CharCode < 48 Or CharCode > 126) Or (CharCode > 56 And CharCode <= 64) Then
                URLEncode = URLEncode + "%" + Right("0" & Hex(CharCode), 2)
            Else
                URLEncode = URLEncode + Chr(CharCode)
            End If
        Next
    End Function

    Private Function LoadFile(Path, Data)
        On Error Resume Next
        Dim Stream
        Set Stream = CreateObject("ADODB.Stream")
        Stream.Type = 1
        Stream.Mode = 3
        Stream.Open
        Stream.LoadFromFile Path
        If Err.Number <> 0 Then Exit Function
        Data = Stream.Read
        LoadFile = True
    End Function

    Private Function GenerateBoundary()
        Dim Char
        Dim N, Start
        Const Chars = "abcdefghijklmnopqrstuvxyz0123456789"
        Randomize
        For N = 1 To 12
            Start = CLng(Rnd * (Len(Chars) - 1)) + 1
            Char = Mid(Chars, Start, 1)
            If Start Mod 2 Then Char = UCase(Char)
            GenerateBoundary = GenerateBoundary & Char
        Next
    End Function
End Class


я использую эту программу, но т.к. в полной мере её не освоил, затрудняюсь куда нужно добавить заголовки
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268209
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед XMLHTTP.Send:
Код: vbnet
1.
2.
XMLHTTP.setRequestHeader "Referer", адрес из реферера
XMLHTTP.setRequestHeader "Authorization", соответственно...
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268228
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyПеред XMLHTTP.Send:
Код: vbnet
1.
2.
XMLHTTP.setRequestHeader "Referer", адрес из реферера
XMLHTTP.setRequestHeader "Authorization", соответственно...


сделал так
Код: sql
1.
2.
3.
4.
5.
6.
    '/// Отправляем запрос 
    XMLHTTP.setRequestHeader "Referer", "http://212.94.107.182/usr_hosts/~upload "
	XMLHTTP.setRequestHeader "Authorization", "Basic dXNyX2hvc3RzOnphcTEyMw=="
    
    XMLHTTP.Send WebForm.VarBody 
    '/// Смотрим статус ответа 


но Referer не переопределился....или вообще не задался
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268233
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, в реферер пробел затесался, во-вторых сомневаюсь, что реферер играет решающую роль.
Запрос с виду корректный, нужен скриншот ответа.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268252
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyВо-первых, в реферер пробел затесался, во-вторых сомневаюсь, что реферер играет решающую роль.
Запрос с виду корректный, нужен скриншот ответа.
без пробела всё также.
если я правильно всё понимаю, то это ответ

HTTP/1.1 504 Fiddler - Receive Failure
Date: Wed, 22 May 2013 09:48:30 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Timestamp: 16:48:30.487

[Fiddler] ReadResponse() failed: The server did not return a response for this request.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268291
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Monz, мб будет удобней, если я дам вам доступ к этому серверу, а конкретно к выделенной папке и вы сможете попытаться передать файл?
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38268584
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы уже дали доступ всем подряд: dXNyX2hvc3RzOnphcTEyMw==
Это зашифрованные логин с паролем.

Нет, доступ мне не нужен, все равно ответ сервера мало информативен.
Ошибка 504 означает Gateway Timeout («шлюз не отвечает»), создается впечатление, что запрос до сервера не доходит. Нужно смотреть его логи, там должны быть подробности.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38269381
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyА вы уже дали доступ всем подряд: dXNyX2hvc3RzOnphcTEyMw==
Это зашифрованные логин с паролем.

Нет, доступ мне не нужен, все равно ответ сервера мало информативен.
Ошибка 504 означает Gateway Timeout («шлюз не отвечает»), создается впечатление, что запрос до сервера не доходит. Нужно смотреть его логи, там должны быть подробности.
теперь на сервере создается одноименный, с передаваемым, файл, но данные в него не передаются. В логах сервера выдается сообщение "uploading file <имя файла>", и процесс подвисает.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38269708
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Monz, какая-то из моих попыток залить файл почти увенчалась успехом, залилось 17,1Кб из 17,8Кб, но увы причины не поняты.
в отладчике смущает статус неопознанная ошибка
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38269737
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Monz, файлы передаются на 99%, исходный файл 17,0Кб, конечный 16,8Кб, программа после подвисания выдала ошибку о переполнении памяти. Мб нужно как-то завершать передачу?
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38269796
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonzМб нужно как-то завершать передачу?Нет, за это отвечает транспортный уровень протокола.

Кривой сервер какой-то, память у него переполняется на детском запросе, видите ли.

Ничем помочь не могу в этой связи, увы.
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38269858
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyMonzМб нужно как-то завершать передачу?Нет, за это отвечает транспортный уровень протокола.
Кривой сервер какой-то, память у него переполняется на детском запросе, видите ли.
Ничем помочь не могу в этой связи, увы.
http://www.rejetto.com/hfs/ вот такой сервер стоит, неужели он кривой до такой степени?
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38270048
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю до какой, но ситуация не типичная. Советую обратиться на их форум: http://www.rejetto.com/forum/hfs-~-http-file-server/
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38271175
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyНе знаю до какой, но ситуация не типичная. Советую обратиться на их форум: http://www.rejetto.com/forum/hfs-~-http-file-server/
везет мне на нетипичные проблемы буду дальше разбираться
...
Рейтинг: 0 / 0
VBS upload Files on HTTP server
    #38284617
Monz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итог.
Пришли к выводу что что-то не так с сервом. Передача данных проходит лишь на 99%, поэтому vbs был отброшен. Решили задачу с помощью cURL.
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBS upload Files on HTTP server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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