【问题标题】:How do I debug move_uploaded_file from .NET?如何从 .NET 调试 move_uploaded_file?
【发布时间】: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);
  1. 如何正确包含 '.print_r($_FILES);在我的 php 代码中?
  2. 我在使用 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 脚本中查看接收到的调试输出,请将其写入服务器上的某个文件,以便以后检查。

标签: php .net upload chilkat


【解决方案1】:

您使用 Chilkat.Upload 的 VB.NET 代码片段似乎缺少实际发送上传 (BeginUpload) 的调用,如下所示:https://www.example-code.com/vbnet/upload_asynchHttps.asp

【讨论】:

  • 你是对的。在我的测试中,我实际上删除了 _chil.BeginUpload() 行。我已将其添加备份。然而,现在这个循环永远不会退出/中断:Do While _Chil.UploadInProgress。所以我想这表明它不起作用。我现在该如何继续调试?
  • 目前的错误是 UploadInProgress 永远不会变成 false。
  • 我已经更新到最后一个 chilkat 版本。在此版本中,UploadInProgress 确实变为 false。我已经发布了新版本的另一个问题。
猜你喜欢
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 2011-06-11
相关资源
最近更新 更多