Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBS upload Files on HTTP server / 25 сообщений из 47, страница 1 из 2
21.05.2013, 12:14
    #38265964
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Все по сабжу. Есть http сервер, требуется удаленно загружать на него файлы. Но программа зависает на этапе передачи потока с ошибкой(в файле скрин). Серфинг не помог. Вот код.

Код: 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.
<vbs>
srcFolder = "F:\USER\USR\"
strUserID = "!!!!!!"      'лог неверный
strPassword = "!!!!!"   'пас неверный
strURL = "http://212.94.107.182/usr_hosts/"

'Set HTTP = WScript.CreateObject("Microsoft.XMLHTTP")
Set HTTP = CreateObject("MSXML2.XMLHTTP")
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.getfolder(srcFolder) 
Dim pot 

For Each File in Folder.Files
  If fso.GetExtensionName(File)="USR" Then
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Type = 1
    objStream.Open 
    objStream.LoadFromFile(srcFolder & fso.GetFileName(File))

	Set USRFile=fso.GetFile(File)
	
	HTTP.open "PUT", strURL & fso.GetFileName(File), False, strUserID, strPassword 
    WScript.Echo "Now uploading file " & fso.GetFileName(File)
	
	'MsgBox "load"
    HTTP.send objStream.Read()
    'MsgBox "upload"
    WScript.Echo "Uploading complete for file " & fso.GetFileName(File)
    fso.DeleteFile(File)
  End If
Next 
WScript.Echo "All files uploaded."

Set HTTP = Nothing
</vbs>


Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
21.05.2013, 12:17
    #38265971
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
а если использовать более свежую библиотеку?
Код: vbnet
1.
2.
CreateObject("MSXML5.XMLHTTP")
CreateObject("MSXML6.XMLHTTP")
...
Рейтинг: 0 / 0
21.05.2013, 12:17
    #38265975
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Код: vbnet
1.
HTTP.open "PUT"

Это что за экзотическая команда? POST должно быть.
...
Рейтинг: 0 / 0
21.05.2013, 12:26
    #38266011
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Shocker.Proа если использовать более свежую библиотеку?
Код: vbnet
1.
2.
CreateObject("MSXML5.XMLHTTP")
CreateObject("MSXML6.XMLHTTP")


чего-то посвежее чем MSXML2.XMLHTTP нету :(
...
Рейтинг: 0 / 0
21.05.2013, 12:29
    #38266021
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Antonariy
Код: vbnet
1.
HTTP.open "PUT"

Это что за экзотическая команда? POST должно быть.
я наивно полагал что именно "PUT" инициирует передачу данных
...
Рейтинг: 0 / 0
21.05.2013, 12:31
    #38266030
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Инициализирует передачу данных вообще HTTP.send, а это определение типа передачи.
...
Рейтинг: 0 / 0
21.05.2013, 12:40
    #38266062
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Monz,

тут брал - 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
21.05.2013, 12:42
    #38266067
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
AntonariyИнициализирует передачу данных вообще HTTP.send, а это определение типа передачи.
меня можно смело назвать нубом в данной тематике.
п.с.
Код: sql
1.
    HTTP.open "POST", strURL & fso.GetFileName(File), False, strUserID, strPassword  

ничего не изменило
п.п.с. обратиться к MSXML6.XMLHTTP или MSXML5.XMLHTTP не получается
...
Рейтинг: 0 / 0
21.05.2013, 12:45
    #38266077
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
qwerty112красссиво и проверенно-рабочая "штука"я ее даже патчил :)
...
Рейтинг: 0 / 0
21.05.2013, 12:51
    #38266103
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Урл некорректен. Урлом должен быть адрес страницы на сервере, которая знает, что ей передают файл, и умеет его сохранять. А ты к strURL просто прилепляешь имя выбранного файла и отправляешь запрос на получившийся несуществующий "адрес".

Monzп.п.с. обратиться к MSXML6.XMLHTTP или MSXML5.XMLHTTP не получается Если MSXML2 работает, это не имеет никакого значения.
...
Рейтинг: 0 / 0
21.05.2013, 12:56
    #38266118
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Monzп.п.с. обратиться к MSXML6.XMLHTTP или MSXML5.XMLHTTP не получаетсяэто я наврал, надо так:
Код: vbnet
1.
2.
3.
CreateObject("MSXML2.XMLHTTP40")
или
CreateObject("MSXML2.XMLHTTP60")


AntonariyЕсли MSXML2 работает, это не имеет никакого значения.я сталкивался с непериодическими глюками, от которых помог переход с XMLHTTP на XMLHTTP40 (и не только мне)
...
Рейтинг: 0 / 0
21.05.2013, 13:13
    #38266189
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
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



Пробую отправлять с помощью вашей проги, по логам сервера файл передается на 99% и выдается сообщение not allowed "имя файла"
...
Рейтинг: 0 / 0
21.05.2013, 13:15
    #38266191
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
MonzПробую отправлять с помощью вашей проги, по логам сервера файл передается на 99% и выдается сообщение not allowed "имя файла"По той же самой причине — бредовый урл.
...
Рейтинг: 0 / 0
21.05.2013, 13:31
    #38266229
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
AntonariyMonzПробую отправлять с помощью вашей проги, по логам сервера файл передается на 99% и выдается сообщение not allowed "имя файла"По той же самой причине — бредовый урл.
млин...а что делать? я не сайт гружу, а пытаюсь скинуть в папку /usr_host/
вебинтерфейс позволяет загружать файлы средствами сервера
п.с. не ругайте сильно за безграмотность
...
Рейтинг: 0 / 0
21.05.2013, 13:54
    #38266290
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Monzя не сайт гружу, а пытаюсь скинуть в папку /usr_host/Это тебе так кажется, а сайту кажется, что идет отправка post-запроса на несуществующую страницу. И он таки прав.

Monzвебинтерфейс позволяет загружать файлы средствами сервераИз этого интерфейса нужно вытащить адерес, на который этот интерфйс отправляет файлы. И поставить в код, который дал qwerty112.

Monzп.с. не ругайте сильно за безграмотностьА за что еще ругать? Вместо того, чтобы изучать в гугле, как работает загрузка файлов по http , тыкаешься наугад.
...
Рейтинг: 0 / 0
21.05.2013, 14:25
    #38266358
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Antonariy, спасибо за советы)) думаю, что посижу ещё денек и решу таки эту проблему
...
Рейтинг: 0 / 0
22.05.2013, 09:14
    #38267651
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Monz,

"<form method="post" enctype="multipart/form-data" action="/cgi-bin/upload.cgi">
В этом примере добавлен стандартный для большинства форм параметр action, который определяет, куда будут переданы результаты заполнения формы. В данном случае это скрипт /cgi-bin/upload.cgi. Что это за скрипт и каким он может быть, мы рассмотрим ниже. Отметим только то, что имя скрипта и место его размещения может быть произвольным. "

у меня сервер HttpFileServer 2.2f , он имеет вид exe-шника + пара файлов конфига + логи + файловая система.
Нету скриптов, не к чему обратиться. Мб у кого-то светлые мысли будут.
...
Рейтинг: 0 / 0
22.05.2013, 09:23
    #38267669
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Monz,

в коде вебинтерфейса для загрузки файлов на серв заданы следующие параметры формы
Код: sql
1.
2.
3.
4.
5.
6.
<form name="frm" action="." target="_parent" method="post" enctype="multipart/form-data" onsubmit="frm.upbtn.disabled=true; return true;">
<input name="fileupload1" size="70" type="file"><br>
<input name="fileupload2" size="70" type="file"><br>
<input name="fileupload3" size="70" type="file"><br>
<input name="upbtn" type="submit" value="Upload files">
</form>
...
Рейтинг: 0 / 0
22.05.2013, 09:56
    #38267717
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Ууу, как все запущено...

Через браузер страницу загрузки открыть можно? Если можно, запускаем FireFox, нажимаем ctrl+shift+k и идем загружать файл, а в этом окошке изучаем запросы, которые отправляет браузер:
...
Рейтинг: 0 / 0
22.05.2013, 10:17
    #38267759
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Antonariy,

заметил странность. вебинтерфейс корректно загружает файлы только если используется IE, с хроме и мозиле виснет на
Код: sql
1.
[13:11:19.982] POST http://212.94.107.182/usr_hosts/

со статусом "ожидается ответ от -- http://212.94.107.182...."
...
Рейтинг: 0 / 0
22.05.2013, 10:22
    #38267774
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Monz, все-таки передался
...
Рейтинг: 0 / 0
22.05.2013, 10:32
    #38267792
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
Значит адрес просто http://212.94.107.182/usr_hosts/ без всяких приставок.
...
Рейтинг: 0 / 0
22.05.2013, 10:41
    #38267814
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
AntonariyЗначит адрес просто http://212.94.107.182/usr_hosts/ без всяких приставок.
в скрипте(который в топе темы) именно такой URL и указан. Что же не так как надо?
...
Рейтинг: 0 / 0
22.05.2013, 10:43
    #38267821
Monz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
MonzAntonariyЗначит адрес просто http://212.94.107.182/usr_hosts/ без всяких приставок.
в скрипте(который в топе темы) именно такой URL и указан. Что же не так как надо?
и в предложенную ранее программу я именно такой URL вносил
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
'/// Создаём новый класс формы 
Set WebForm = New WebFormClass 
'/// Указываем куда будем отправлять данные 
WebForm.Action = "http://212.94.107.182/usr_hosts/" 
'/// Устанавливаем метод передачи POST 
WebForm.Method = "POST" 
'/// Для того чтобы передались файлы устанавливаем тип кодирования multipart/form-data 
WebForm.Enctype = "multipart/form-data" 
'/// Добавляем файл 
WebForm.AddFile "file", "F:\\USER\USR\CONS108_584754__68222.USR" 
'/// Запускаем процедуру отправку     
...
Рейтинг: 0 / 0
22.05.2013, 11:05
    #38267879
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS upload Files on HTTP server
В топе к этому адресу прилеплялось имя файла.

А второй вариант надо раскуривать подробнее. Покажите заголовки post'а, который успешно отправил FF.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBS upload Files on HTTP server / 25 сообщений из 47, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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