Я подумал, что было бы очень удобно, если бы я мог загружать текстовые документы на свой веб-сайт из Word, используя чистый VBA, без плагинов и т. Д. И т. Д.
В качестве отправной точки я хотел бы загрузить файл в мой корневой каталог 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>";
?>
Я осознаю, что, скорее всего, будет много ошибок как на стороне клиента, так и на стороне сервера, поскольку я пытаюсь адаптировать различные примеры, которые я нашел, но я был бы очень благодарен за любые указатели!
Хорошие новости — я смог понять это в конце, и я надеюсь, что этот код пригодится кому-то еще! В конце концов я решил написать свой код на стороне сервера в 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
Других решений пока нет …