VBA POST请求通过上传文件发送多部分表单数据

我很想获得关于这个主题的一些input,特别是对于Excel / VBA。

通过使用networkingstream量监视器,我发现系统在工作中依赖于发送多部分/表单数据的POST请求。 我已经破解了所有与边界的语法等,并复制了stringbuild立的forms与不同领域的负载完美的成功上传和响应的forms。

我正在努力的一件事是如何包括上传的文件。 当我在交通监视器的请求主体上看到它时,它看起来像这样:

-----------------------------7d01ecf406a6 Content-Disposition: form-data; name="Reload" False -----------------------------7d01ecf406a6 Content-Disposition: form-data; name="ReferenceFile001"; filename="word.doc" Content-Type: msoffice/word <Binary File Not Shown> ---------------------------7d01ecf406a6 'After a file entry boundary not prefixed with 2 "-" Content-Disposition: form-data; name="SomethingElse" SomeRandomStuff -----------------------------7d01ecf406a6-- 

所以我做了一些挖掘,发现了几个例子,将文件转换为二进制文件,并将它们包含在string中,然后使用'strConv(theString,vbFromUnicode)

但是我没有使用这种方法成功上传文件。 我有各种服务器回复错误,因为我已经尝试了不同的东西,但现在我在一个点,我没有得到任何错误响应…但上传只是没有成功。

我目前使用的代码类似于在这里find的代码! 我已经包含了下面的二进制转换位。 我也试过这个使用logging集和附加块,但不断在这里得到错误

基本上我想知道有没有人在Excel / VBA中成功地完成了这个工作,这是一个多领域的多部分表单,其中一些是file upload。 有一个简单的技术,将文件转换为二进制文件,并将其包含在文本string? 因为我关于下面的代码的主要问题是,我们有一个正常的文本string,并在其中间粘贴一个转换后的二进制文件,然后在发送之前再次进行转换。 把这样的转换文件粘贴在string中间是否有意义? 我问这是因为当我试图在文本文件中查看string之前,我发送一个文本文件“string”时出现错误!

我希望这是有道理的,任何贡献都将不胜感激,现在我一直在为此挠头。

 stringToSend = String1 & getFile(thisworkbook.path & "filename.doc" & String2 '' Assume string1 and string2 are perfect, '' I have this working even with file "deletions" where the following "getFile" function would return "" Function GetFile(ByVal FileName As String) As String Dim FileContents() As Byte, FileNumber As Integer ReDim FileContents(FileLen(FileName) - 1) FileNumber = FreeFile() Open FileName For Binary As FileNumber Get FileNumber, , FileContents Close(FileNumber) GetFile = StrConv(FileContents, vbUnicode) End Function 

忘记GetFile函数! 因为发送到服务器的数据必须是Byte()数组,而不是String! 在此链接查看Jscript的最后一个代码,轻松地将其转换为VBA。 如果你不能成功上传文件,我会分享你链接excel文件包含演示成功代码上传文件。

我自己的答案,因为我设法让这个系统的工作:

在各种Strings和GetFile的连接之后,最后一步就是在发送POST请求之前

 strConv(sendRequest, vbFromUnicode) 

无论如何,我确定我已经尝试了几次,但也许我的stringbuild立缺lessVbCrLf或什么的。 无论如何,它工作! 好极了!