通过http上传word文档

时间:2015-04-09 15:29:09

标签: php vba http upload ms-word

我认为如果我可以使用纯VBA无插件等将Word文档从Word中上传到我的网站,那将非常方便......

作为一个起点,我想在我的根目录c:\ reg.txt中上传一个文件,一旦我完成了工作,我希望我的宏将当前文档保存到某个地方然后上传它。

到目前为止,我的VBA代码是这样的:

Sub UploadFile()
'
' UploadFile Macro
'
'
strURL = "http://www.mywebsite.com/files/upload.php"
File = "c:\reg.txt"

Set HTTP = CreateObject("Microsoft.XMLHTTP")

Set objStream = CreateObject("ADODB.Stream")
    objStream.Type = 1
    objStream.Open
    objStream.LoadFromFile (File)

    HTTP.Open "POST", strURL, False
    MsgBox "Now uploading file " & File

    HTTP.setRequestHeader "Content-Type", "multipart/form-data;"
    HTTP.send objStream.Read
    MsgBox (HTTP.responseText)
    MsgBox "Uploading complete for file " & File

End Sub

我的php脚本是这样的:

<?php

$uploaddir = '/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo $uploadfile;
echo "<p>";

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo "File is valid, and was successfully uploaded.\n";
} else {
   echo "Upload failed";
}

echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";

?>

我意识到我的客户端和服务器端代码可能存在多个错误,因为我正在尝试调整我发现的各种示例,但我会非常感谢任何指针!

1 个答案:

答案 0 :(得分:1)

好消息 - 我最终能够弄清楚这一点,我希望这段代码能为其他人派上用场!最后我选择在asp中编写我的服务器端代码,因为我真的不知道我在用php做什么!

Sub UploadFile()
'
' UploadFile Macro
'
'
Dim objStream, objHttp
Dim sUrl, sFile, sName

ActiveDocument.Save
FileName = ActiveDocument.Name
Application.Documents.Add FileName
ActiveDocument.SaveAs "c:\temp\" & FileName
ActiveDocument.Close

sFile = "c:\temp\" & ActiveDocument.Name
UUID = "xxxx"
FUID = "yyyy"
sName = Right(sFile, Len(sFile) - InStrRev(sFile, "\"))

sUrl = "http://www.mywebsite.com/test.asp?File=" & sName & "&User=Ed&UUID=" & UUID & "&FUID=" & FUID

Set objStream = CreateObject("ADODB.Stream")
objStream.Mode = 3
objStream.Type = 1
objStream.Open
objStream.LoadFromFile (sFile)

If Err = 0 Then
    MsgBox "Uploading ... please wait"
End If

Set objHttp = CreateObject("MSXML2.ServerXMLHTTP")
objHttp.Open "POST", sUrl, False
objHttp.SetRequestHeader "Content-Length", objStream.Size
objHttp.Send objStream.Read(objStream.Size)

If Err = 0 Then
    MsgBox objHttp.responseText
Else
    MsgBox "Upload Error!" & vbCrLf & Err.Description
End If

objStream.Close
Set objStream = Nothing
Set objHttp = Nothing

End Sub