2016-11-22 159 views
0

我很想获得关于此主题的一些输入,尤其是Excel/VBA。VBA POST请求通过上传文件发送多部分表单数据

通过使用网络流量监视器,我发现系统在工作中依赖于发送多部分/表单数据的POST请求。我用边界等破解了所有的语法,并且复制了带有不同字段加载的表单的字符串构建,并且成功上传和响应。

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

-----------------------------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-- 

所以我做了一些挖掘和发现文件转换为二进制文件并将它们包括在字符串中的几个例子转换整个前使用'strConv(theString,vbFromUnicode)的东西

但我没有使用此方法成功上传文件。由于我尝试了不同的东西,所以出现了各种服务器回复错误,但现在我处于一个没有得到任何错误响应的地步......但上传也不成功。

我目前使用的代码类似于发现的代码 Here!,我已经包含了下面的二进制转换位。 我也试着这样一个使用记录集和附加块,但一直得到错误here

基本上我想知道,如果有人在那里有在Excel/VBA成功完成这件事 - 与各个领域多形式的,其中有些是文件上传。是否有一种简单的技术将文件转换为二进制文件并将其包含在文本字符串中?因为我关于下面代码的主要问题是我们有一个普通的文本字符串,并在其中间粘贴一个转换后的二进制文件,然后在发送之前再次转换它。把这样的转换文件粘贴在字符串中间是否有意义?我问这是因为在我发送文本文件之前试图查看字符串时,在尝试将“字符串”写入文本文件时出现错误!

我希望这是有道理的,任何贡献都将值得赞赏,我一直在为这个问题困扰了好几天。

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 

回答

1

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

+0

嗨,昨天我成功地得到了这个工作,但在GetFile和字符串连接之后,我不得不在使用'strConv'和'vbFromUnicode'之前在POST请求中发送它。终于解脱了!编辑:我刚刚检查了你发布的链接,看到它基本上做了同样的事情,所以我接受了你的答案。 – jamheadart

+0

jamheadart:strConv函数不支持UTF-8编码! – doveandrose

+0

考虑将您的帖子添加到评论中的信息中。这样做后将评论标记为过时。 –

0

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

各种字符串的串联后的GetFile(S),最后一步只是在POST请求

发送前下方使用
strConv(sendRequest, vbFromUnicode) 

无论如何,我确信我已经尝试了这几次,但也许我的字符串建筑缺少VbCrLf或其他东西。无论如何,它工作!好极了!

相关问题