Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Передать файл 3 Gb по цепочке VBS->PHP->MySQL / 25 сообщений из 53, страница 1 из 3
28.12.2014, 23:56:19
    #38845076
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Здравствуйте гуру SQL. Новичку требуется ваш совет.

Задача - в автоматическом режиме регулярно передавать файл 3 Gb в PHP+MySQL

ОС с которого передается файл - Windows XP файл должен передаваться через VBS скрипт на клиенте и получаться PHP на сервере.

Как я себе это представляю - VBS используя ADO и Msxml2.XMLHTTP читает файл и отправляет PHP скрипту, который в свою очередь
перенаправляет поток данных в БД MySQL в столбец с типом LONGBLOB.

Либо VBS отправляет файл методом POST/http ...

Файл большой, жизнеспособна ли такая схема - непонятно. Как в такой ситуации работает PHP, хватит ли памяти принять такой файл.
Не будет ли сбоев из за ошибок передачи данных?

Подскажите направление, если схема жизнеспособна - буду работать в этом направлении дальше.
...
Рейтинг: 0 / 0
29.12.2014, 00:09:36
    #38845085
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555Здравствуйте гуру SQL. Новичку требуется ваш совет.

Задача - в автоматическом режиме регулярно передавать файл 3 Gb в PHP+MySQL

ОС с которого передается файл - Windows XP файл должен передаваться через VBS скрипт на клиенте и получаться PHP на сервере.

Как я себе это представляю - VBS используя ADO и Msxml2.XMLHTTP читает файл и отправляет PHP скрипту, который в свою очередь
перенаправляет поток данных в БД MySQL в столбец с типом LONGBLOB.

Либо VBS отправляет файл методом POST/http ...

Файл большой, жизнеспособна ли такая схема - непонятно. Как в такой ситуации работает PHP, хватит ли памяти принять такой файл.
Не будет ли сбоев из за ошибок передачи данных?

Подскажите направление, если схема жизнеспособна - буду работать в этом направлении дальше.

случаи разные бывают, но с вероятностью 99% нежизнеспособна...
Бейти файл на части, шлите кусками (та же схема, но), вопрост только в том, зачем вам 3GB блоб в базе данных? Может его просто в файл на сервере?
Помимо прочего на таких объёмах неплохо бы проверять целостность файла...
...
Рейтинг: 0 / 0
29.12.2014, 00:10:14
    #38845086
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
NikolayV81 Бейте файл на част
...
Рейтинг: 0 / 0
29.12.2014, 00:11:54
    #38845088
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555,

а какова причина выбора столько странной схемы?
теоретически, наверное, заставить работать ее возможно, но, имхо, это будет чудовищно неэффективно.
...
Рейтинг: 0 / 0
29.12.2014, 00:28:24
    #38845095
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
miksoftmanager5555,

а какова причина выбора столько странной схемы?
теоретически, наверное, заставить работать ее возможно, но, имхо, это будет чудовищно неэффективно.

я за 2 торрент клиента и отправку хэша :) ...
...
Рейтинг: 0 / 0
29.12.2014, 01:03:32
    #38845112
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Я перезаложился по максимуму. 3 Гб - это максимально возможный размер файла. В основном файлы будут значительно меньше. Не знаю насчет трех, но гигабайт точно будут. Причина хранения файла в MySQL - больше негде хранить, а в MySQL места достаточно. Сохранять в папках нет возможности.
...
Рейтинг: 0 / 0
29.12.2014, 01:08:31
    #38845113
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Идея с 2мя торрентами очень интересная и необычная, но сохранять 2-ой торрент на сервере некуда... Писать в папки запрещено.
...
Рейтинг: 0 / 0
29.12.2014, 01:26:32
    #38845117
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555Я перезаложился по максимуму. 3 Гб - это максимально возможный размер файла. В основном файлы будут значительно меньше. Не знаю насчет трех, но гигабайт точно будут. Причина хранения файла в MySQL - больше негде хранить, а в MySQL места достаточно. Сохранять в папках нет возможности.А возможно коннектиться к MySQL извне?
...
Рейтинг: 0 / 0
29.12.2014, 01:28:18
    #38845118
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Сейчас нет, но в будущем такая возможность будет.
Так что пока, уверенно - нет.
...
Рейтинг: 0 / 0
29.12.2014, 01:33:44
    #38845120
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555,

И можете ли вы изменять настройки MySQL ?
...
Рейтинг: 0 / 0
29.12.2014, 01:41:11
    #38845122
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
нет.
Нашел в интернете скрипт, по описанной выше схеме хранит изображения в MySQL. Но, изображения <15Mb, а мои потребности значительнее.
...
Рейтинг: 0 / 0
29.12.2014, 01:50:37
    #38845123
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555нет.Тогда и так невысокие шансы резко падают.
Одно из препятствий - max_allowed_packet .

Рассмотрите вариант резать файл на множество кусочков, например, по мегабайту и хранить их в отдельных BLOB-ах.
...
Рейтинг: 0 / 0
29.12.2014, 03:45:02
    #38845131
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
miksoft,

show variables like 'max_allowed_packet' - показал 7 Мб. Значит будем разбивать файл на куски по 5 Мб.
Как лучше разбить файл? - при отправке, в клиенте отправляющем файл вести подсчет? Отправили 5 Мб, перезагружаем PHP скрипт, присваиваем следующий номер части файла, отправляем следующие 5 мб, и так по кругу... ?
Или rar-ом в командной строке создавать многотомный архив < 5 Мб том, и по одному файлу отправлять на сервер?
...
Рейтинг: 0 / 0
29.12.2014, 10:11:21
    #38845258
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Вариант примонтировать к серверу XP-шную директорию с файлом не рассматривается?
...
Рейтинг: 0 / 0
29.12.2014, 11:42:29
    #38845351
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Согласен, нужна настройка сервера и нарезка на части.
Следует проверить всю цепочку органичений - не только в базе Mysql -> max_allowed_packet
но и в PHP:
-> max_execution_time - чтобы скрипт не отвалился раньше, чем закончит
-> max_post_size и max_post_file_size - ну, это понятно

Нарезка на части позволит еще и передавать сразу в несколько потоков.
Сначала передаем на сервер коллекцию хешей для всех частей и их номера и размеры.
Затем начинаем закачку.
В случае обрыва - всегда можно запросить у сервера какие части у него уже есть, а каких нет
и продолжить закачку недостающих частей.

Msxml2.XMLHTTP для гигабайтных размеров я не использовал, не знаю как себя поведет.

А по-хорошему подумайте над возможностью использования
pscp.exe - вызвал ее из командной строки, и все дела.
...
Рейтинг: 0 / 0
29.12.2014, 11:47:09
    #38845358
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Пожалуй, что нарезку действительно можно доверить архиватору, например 7z.
...
Рейтинг: 0 / 0
29.12.2014, 12:21:58
    #38845403
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555Я перезаложился по максимуму.
Сохранять в папках нет возможности.
ничего не делайте - само пройдет после сессии.
...
Рейтинг: 0 / 0
01.01.2015, 13:24:41
    #38847416
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Спасибо, очень полезно почитать ваши соображения. Задался вопросом - оценить трудоемкости реализации:

А. - Файлобмен через SQL - не самый легкий способ для организации хранения больших файлов. Минусы - готовых решений нет, неизвестный объем работы по изобретению, отладке. Плюсы отсутствие затрат времени, сил на настройку/установку серверной части. Все настроено, работает, но с ограничениями.


Б. - FTP сервер, - не ясно как реализовать следующее:
Б.1 - На FTP каждый пользователь должен имеет доступ на запись только в свою папку.
Б.2 - FTP сервер каким то образом получает данные об учетных записях (логинах) пользователей с PHP+MySQL сервера (расположенного на другой машине). И на основании этих данных проводит авторизацию.

В. - Появилась свободная машина. На VirtualBox поднять свой LINUX/Deb - ОС + установить LAMP или XAMP .
Плюсы - никаких ограничений на запись в папки через протокол HTTP, то есть любые настройки PHP и MySQL. Для решения задач достаточно типовых PHP решений с небольшой правкой под себя. Минусы - нет опыта по установке и настройке Debian+XAMP(PHP+MySQL).
При перезагрузке основной ОС, можно ли сделать чтобы VirtualBox с Линуксом загружался автоматически.

Подскажите самый легкий вариант.
Вчера поработал с WAR-FTP + pscp.exe - для того, чтобы организовать работу FTP server, pscp, PHP, MySQL потребуется немало времени...

netwind - ирония не уместна. Лучше что нибудь полезное скажите...
...
Рейтинг: 0 / 0
01.01.2015, 14:54:27
    #38847440
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555Б.2 - FTP сервер каким то образом получает данные об учетных записях (логинах) пользователей с PHP+MySQL сервера (расположенного на другой машине). И на основании этих данных проводит авторизацию.Насколько знаю, некоторые FTP-серверы умеют авторизовать своих пользователей по SQL-базе. Сходу не скажу, какой именно сервер и какую СУБД использует.


manager5555При перезагрузке основной ОС, можно ли сделать чтобы VirtualBox с Линуксом загружался автоматически.Конечно можно. При установке VirtualBox на FreeBSD даже готовые штатные стартовые скрипты для этого имеются.
...
Рейтинг: 0 / 0
01.01.2015, 17:19:07
    #38847472
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
vkle,

Только что поставил Lubuntu+XAMPP. Что касается PHP+MySQL думаю сам разберусь.
1. Как сделать, чтобы web сервер из Lubuntu был доступен всем машинам из интернета, учитывая что Lubuntu стоит на виртуалке.
2. Под Windows не поделится кто нибудь скриптом автозагрузки VirtualBox и автозапуском гостевой ОС.
3. Если файл - образ жесткого диска в VirtualBox *.vdi скопировать и подключить к другому VirtualBox - запустится ли установленная на него ОС? Если да, то бэкап ОС можно достаточно легко организовать.
...
Рейтинг: 0 / 0
01.01.2015, 18:21:12
    #38847491
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager55551. Как сделать, чтобы web сервер из Lubuntu был доступен всем машинам из интернета, учитывая что Lubuntu стоит на виртуалке.Виртуалка тут не имеет значения. Смотрите в сторону маршрутизации, проброса портов и т.п. Конкретнее, не зная структуры сети сложно что-либо советовать.

manager55552. Под Windows не поделится кто нибудь скриптом автозагрузки VirtualBox и автозапуском гостевой ОС.В винде шедулером можно запустить. Что-то вроде
Код: sql
1.
VBoxManage startvm mashine_name --type headless

скорее всего.

manager55553. Если файл - образ жесткого диска в VirtualBox *.vdi скопировать и подключить к другому VirtualBox - запустится ли установленная на него ОС?Запустится. Разумеется, конфигурация виртуальной машины должна быть более-менее похожей.
Пара нюансов:
1. Если виртуалка 64-битная, то при 32-битной ОС хоста она не запустится - это следует иметь в виду.
2. Простое копирование файла виртуального диска не есть хорошо. Для этого имеется инструмент VBoxManage clonehd или clonevdi.
...
Рейтинг: 0 / 0
01.01.2015, 18:23:04
    #38847493
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
vkleВ винде шедулером можно запустить.Или ярлыком из Автозагрузки, если это устроит.
...
Рейтинг: 0 / 0
05.01.2015, 22:44:48
    #38848718
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
Оптимальным решением оказалось развертывание XAMPP для Windows.
Единственный минус - отсутствие безопасности, пакет предназначен для разработки.
Например из внешней сети, помимо своих скриптов есть возможность запустить phpinfo() и посмотреть очень много интересного про компьютер.

По затратам времени/ простоте настройки - самое эффективное решение.
Очень не требователен к ресурсам. Работает в фоновом режиме как служба Windows.

Как бы разграничить доступ к папкам в апаче - из локалки можно, из внешнего интернета - нельзя.
...
Рейтинг: 0 / 0
06.01.2015, 00:04:32
    #38848786
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
manager5555Оптимальным решением оказалось развертывание XAMPP для Windows.
Единственный минус - отсутствие безопасности, пакет предназначен для разработки.Что мешает установить нужное из официальных дистрибутивов, которые предназначены для боевых серверов?


manager5555Например из внешней сети, помимо своих скриптов есть возможность запустить phpinfo() и посмотреть очень много интересного про компьютер.Надуманная проблема. Можно удалить этот файл или удалить строку с оной функцией. Можно вообще запретить в PHP все "лишние" функции.


manager5555Как бы разграничить доступ к папкам в апаче - из локалки можно, из внешнего интернета - нельзя.С чего вдруг?
...
Рейтинг: 0 / 0
06.01.2015, 23:43:12
    #38849563
manager5555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать файл 3 Gb по цепочке VBS->PHP->MySQL
vkle, Времени отведенное на задачи сжато, поэтому используются максимально автоматизированные решения.

Подскажите, как отправить из VBS за один запрос файл и переменную?

В HTML файле все выглядит довольно просто :

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<html>
<head>
  <title>Загрузка файлов на сервер</title>
</head>
<body>
      <h2><p><b> Форма для загрузки файлов </b></p></h2>
      <form action="http://111.111.111.111/upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br>
      <input type="hidden" name="UIN" value="EDAF4"> 
      <input type="submit" value="Загрузить"><br>
      </form>
</body>
</html>



Тоже самое на VBS:
Пробовал в строке XMLHTTP.Send WebForm.VarBody добавлять переменную - не работает сркипт...

Код: 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.
'Описание класса FormClass 
    
'Пример создания: "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 
    '/// Если тип передачи данных POST, то добавляем к пакету заголовки 
    If WebForm.Method = "POST" Then 
        '/// Если отправляем с кодированием "multipart/form-data", то добавляем информацию о разделителе данных 
        If WebForm.Enctype = "multipart/form-data" Then 
            XMLHTTP.setrequestheader "Content-type", WebForm.Enctype & "; boundary=" & WebForm.Boundary 
        Else '/// В ином случае добавляем информацию о том, что данные отправляются формой 
            XMLHTTP.setrequestheader "Content-type", WebForm.Enctype 
        End If 
    End If 
    
    '/// Отправляем запрос 
    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 
        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) 
            SetElement Fields, Name, Value 
        End Sub 

        Public Sub AddFile(Name, Value) 
            SetElement Files, Name, Value 
        End Sub 

        Private Function SetElement(ArrayRef, Name, Value) 
            For ElementID = 0 To UBound(ArrayRef) 
                If ArrayRef(ElementID)(0) = Name Then 
                    ArrayRef(ElementID)(1) = Value 
                    Exit Function 
                End If 
            Next 
            ReDim Preserve ArrayRef(UBound(ArrayRef) + 1) 
            ArrayRef(UBound(ArrayRef)) = Array(Name, Value) 
        End Function 
          

        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 & Escape(Field(0)) & "=" & Escape(Field(1)) & "&" 
                Next 
                For Each File In Files 
                    VarBody = VarBody & Escape(File(0)) & "=" & Escape(File(1)) & "&" 
                Next 
                if Len(VarBody) > 0 Then VarBody = Left(VarBody, Len(VarBody) - 1) 
            End If 
        End Property 

        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 
            For N = 1 To 12 
                Randomize 
                Char = Chr(CLng(Rnd * 25) + 97) 
                If N Mod 2 Then Char = UCase(Char) 
                GenerateBoundary = GenerateBoundary & Char 
            Next 
        End Function 
End Class
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Передать файл 3 Gb по цепочке VBS->PHP->MySQL / 25 сообщений из 53, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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