我有一个html页面,其中有一个表单,用户可以在其中上传.txt文件到服务器。他们选择文件并按下上传按钮,文件就会通过PHP脚本上传到网站根文件夹。此根文件夹中有一个.xlsm文件,用户使用该文件将上载的文件上载到MS SQL server数据库中,该数据库运行查询并将结果发送回.xlsm文件。
我遇到的问题是,当用户上传文件时,临时文件会(使用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代码中上传的文件。当我尝试的时候,它确实被上传了。
我做对了。我在PHP脚本中使用了copy($tmp_name, $name)
,而不是使用move_uploaded_file($tmp_name, $name)
。
uploaded_file方法似乎无法将文件复制到文件夹中并使其可用。