Этот вопрос много раз задавался другими в той или иной форме, но большинство оставалось без ответа, или был дан ответ «Используй C #, дух!», Что, кстати, не ответ.; -)
Я хочу загрузить ZIP-файл на веб-сервер через VBA.Код на стороне сервера уже существует и работает хорошо;он принимает zip-файлы посредством ручной загрузки формы и что-то делает с содержимым zip-файла.
Теория заключается в том, что я планирую преобразовать двоичное содержимое zip-файла в строку HTTP-запроса и отправить его всервер с использованием некоторых методов из библиотеки WinHTTP.Если все идет хорошо, сценарий на стороне сервера (на Perl) не сможет определить, пришел ли файл из VBA или из браузера и продолжает ли он нормально работать.
Однако, трансмогрифицируя zip-файл в строку HTTP-запросане кажется очень прямым.
Похоже, что при поиске в Интернете существует 3 общих стратегии:
Метод 1: WinHTTP и ручное кодирование двоичного файла в строку запроса HTTP
- Включает открытие файла в двоичном режиме и ручное применение некоторой кодировки voodoo для преобразования двоичного потока в строку HTTP-запроса и отправки его по пути с помощью WinHTTP. Страшное количество кода.
Метод 2: WinHTTP
- Включает использование ADODB.Поток.Менее десяти строк кода.
Метод 3: Автоматизация IE с помощью SendKeys
- Есть только одно слово, чтобы описать этот взлом: Yuck!И, вероятно, сломается в будущей версии IE, если не уже.Менее десяти строк кода. Риск безопасности.
Я склоняюсь к Метод 2 , однако документация тонкая, примеры кода редкие, и нет уверенности в том, что это работает.Большинство примеров кода неполны и часто содержат комментарии, которые говорят, что они не работают.Этот метод действительно работает?
Следующий в строке метод 1 .
Метод 3 Пожалуйста, нет!(Скорее используйте C #, если дело касается этого. Любите C #, только требования разрешают только VBA)
У кого-нибудь есть какие-нибудь хорошие примеры того, как выполнить эту задачу?