【发布时间】:2021-11-01 08:22:14
【问题描述】:
更新:我更新了 Chilkat。最新版本提供了更多调试信息,其行为有所不同:它不再在 UploadInProgress 挂起。 但是,在新版本中问题仍然存在。因此,我发布了另一个问题。
为了完整起见,无论如何,这里是一个问题:
我有以下 php 文件:
<?php
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
?>
我将它与 Chilkat.Upload 一起使用,如下所示:
Dim _Chil As New Chilkat.Upload
_Chil.Ssl = True
_Chil.Hostname = "www.mydomain.com"
_Chil.Path = "/upload.php"
_Chil.AddFileReference("file", PathToFileThatShouldBeUploaded)
Dim bUploadStarted As Boolean = _Chil.BeginUpload()
If Not bUploadStarted Then
MessageBox.Show("Error starting the upload: " & NewLines(2) & _Chil.LastErrorText)
Return
End If
Do While _Chil.UploadInProgress 'Never becomes False, so the loop does not exit / break
_Chil.SleepMs(200)
Loop
Dim bSuccess As Boolean = _Chil.UploadSuccess
If Not bSuccess Then
MessageBox.Show("Error uploading: " & NewLines(2) & _Chil.LastErrorText)
Else
MessageBox.Show("Upload completed. :-)")
End If
以前可以用,后来我的hoster更新了php,现在就不行了。
Chilkat 没有发现任何错误。
我相信我必须从服务器获取错误。 但是,我不知道如何。
这就是我要开始的方式:
<?php
if (move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]))
{
echo "Uploaded";
}
else
{
echo "File not uploaded. Err: ";
}
?>
2 个问题:
如何让它打印出错误?我读过关于
'.print_r($_FILES);
- 如何正确包含 '.print_r($_FILES);在我的 php 代码中?
- 我在使用 Chilkat.Upload 时如何接收/显示此错误?
谢谢!
编辑:
根据评论,这是我当前的代码:
https://example.com/upload.php?d:\test.avi
<?php
echo 'Error code: '.$_FILES['file']['error'];
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
?>
【问题讨论】:
-
在您尝试移动文件之前,请查看
$_FILES['file']['error'],这应该表明 PHP 遇到的任何问题。错误代码解释here -
@TangentiallyPerpendicular 谢谢。你能告诉我如何检查错误吗?有没有办法从浏览器而不是从 VB.NET 脚本调用我的 php 脚本?如果我可以从浏览器调用它,我想我可以使用 echo。
-
PHP manual 中有大量信息,包括一些示例代码。如果您想使用浏览器来调试上传脚本,只需浏览到您用作当前 .NET 上传程序目标的地址。
upload.php顶部的简单echo 'Error code: '.$_FILES['file']['error'];应该会告诉您需要了解的内容。 -
@TangentiallyPerpendicular 我在我的帖子中添加了一个编辑。这就是你的建议吗?我问是因为它只显示:错误代码:当我在浏览器中输入example.com/upload.php?d:\test.avi 时。
-
不,作为这里的调试措施当然毫无意义;您无法通过简单地在 URL 中附加文件名来执行文件上传。如果您无法在 .NET 脚本中查看接收到的调试输出,请将其写入服务器上的某个文件,以便以后检查。