我有一個HTML頁面,其中用戶可以上傳一個.txt文件到服務器的表單。他們選擇文件並按上傳按鈕,文件通過PHP腳本上傳到網站根文件夾。在此根文件夾中有一個.xlsm文件,用戶可以使用該文件將其上載的文件上載到MS SQL服務器數據庫中,該數據庫運行查詢並將結果發送回.xlsm文件。Excel VBA - 文件不存在遠程用戶的錯誤消息
我遇到的問題是,當用戶上傳文件時,臨時文件被移動(使用move_uploaded_file
方法)到網站根目錄,並且保存的文件被上傳到數據庫,但用戶不斷收到錯誤消息該文件不存在。當我從另一個目錄手動將文件複製到根目錄時,用戶可以將數據上傳到數據庫。
這就像臨時文件被移動到根目錄但沒有使其可用。這裏是我的代碼:
HTML:upload.html
<html>
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" />
Choose a file to upload: <input name="nfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
<br><br>
<a href='Lostsales.xlsm'>Spreadsheet</a>
</html>
PHP:php.html
<?php
$name = $_FILES["nfile"]["name"];
$tmp_name = $_FILES["nfile"]["tmp_name"];
move_uploaded_file($tmp_name, $name);
echo $tmp_name;
?>
<html>
<form action="upload.html">
<input type="submit" value="Done" />
</form>
</html>
用於上傳數據到MS SQL數據庫
VBA代碼:Lostsales.xlsm
Sub Button1_Click()
Dim con As New ADODB.Connection
con.Open "Provider=SQLOLEDB.1;Password=valencia;Persist Security Info=True;User ID=lostsls;Initial Catalog=Lost_sales;Data Source=PCS2635\SQLEXPRESS"
con.Execute "BULK INSERT lsdata FROM '" & Cells(7, 1).Value & "' WITH(FIRSTROW = 2, FIELDTERMINATOR='\t' ,ROWTERMINATOR='\n')"
con.Close
Set con = Nothing
End Sub
Cells(7, 1).Value
= C:\inetpub\wwwroot\test\lostsls\import.txt
當遠程用戶運行VBA宏時,他/她會收到文件C:\inetpub\wwwroot\test\lostsls\import.txt
不存在的消息。其中import.txt是用戶在HTML/PHP代碼中上傳的文件。當我嘗試它時,會上傳。