Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用vba跟踪http post进度_Http_Vba_Post_Excel_Progress - Fatal编程技术网

使用vba跟踪http post进度

使用vba跟踪http post进度,http,vba,post,excel,progress,Http,Vba,Post,Excel,Progress,我需要使用VBA将Excel工作表中的一些数据发布到HTTP web服务。 我正在使用MSXML2.XMLHTTPServer。我如何跟踪上传进度以便向用户提供反馈(例如进度条) 以下是我使用的代码: Const STR_BOUNDARY As String = "3fbd04f5-b1ed-4060-99b9-fca7ff59c113" '--- prepare body PostData = "--" & STR_BOUNDARY & vbCrLf &a

我需要使用VBA将Excel工作表中的一些数据发布到HTTP web服务。 我正在使用MSXML2.XMLHTTPServer。我如何跟踪上传进度以便向用户提供反馈(例如进度条)

以下是我使用的代码:

Const STR_BOUNDARY  As String = "3fbd04f5-b1ed-4060-99b9-fca7ff59c113"

     '--- prepare body
    PostData = "--" & STR_BOUNDARY & vbCrLf & _
        "Content-Disposition: form-data; name=""path""; filename=""" & fileName & """" & vbCrLf & _
        "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _
        PostData & vbCrLf & _
        "--" & STR_BOUNDARY & "--"
    '--- post
        objHTTP.Open "POST", Url, False
        objHTTP.SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
        objHTTP.Send pvToByteArray(PostData)

    PostString = objHTTP.responseText

大约一年前,我通过猜测服务器响应的名称解决了这个问题,在“With CreateObject(“Microsoft.XMLHTTP”)”部分中,我将“.ResponseText”作为总猜测传递给一个变量,并在上传到Box.com时起作用!这是下面代码中的最后一行,取自:

注意,bAsync变量必须设置为False

'--- read file
nFile = FreeFile
Open sFileName For Binary Access Read As nFile
If LOF(nFile) > 0 Then
    ReDim baBuffer(0 To LOF(nFile) - 1) As Byte
    Get nFile, , baBuffer
    sPostData = StrConv(baBuffer, vbUnicode)
End If
Close nFile
'--- prepare body
    sPostData = "--" & STR_BOUNDARY & vbCrLf & _
        "Content-Disposition: form-data; name=""uploadfile""; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """" & vbCrLf & _
        "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _
        sPostData & vbCrLf & _
        "--" & STR_BOUNDARY & "--"
'--- post
    Dim sResponseText As String
    With CreateObject("Microsoft.XMLHTTP")
        .Open "POST", sURL, bAsync
        .SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
        .Send pvToByteArray(sPostData)
        sResponseText = .ResponseText
    End With

到目前为止,您得到了什么?请显示您的代码。您可以使用OnReadyStateChange事件,但这并不容易@user2324106:如果您向我们展示您的代码,我们可以帮助您改进it@DickKusleika谢谢你的链接。我如何知道已经发布了多少数据(以显示进度条)?如果bAsync设置为false,那么这是否意味着
。Send pvToByteArray(sPostData)
将一直阻止,直到收到整个响应?在收到回复时,您如何获得进度?