发行';s使用Vb.net作为客户端,PHP作为服务器(ï;»;¿;)

发行';s使用Vb.net作为客户端,PHP作为服务器(ï;»;¿;),php,vb.net,Php,Vb.net,所以我得到了这些密码 <?php $uploaddir = "upload/"; if(is_uploaded_file($_FILES['file']['tmp_name'])) { $name = rand(1,1000000000000); $uploadfile = $uploaddir . basename($name . ".png"); if(move_uploaded_file($_FILES['file'][

所以我得到了这些密码

<?php
    $uploaddir = "upload/";
    if(is_uploaded_file($_FILES['file']['tmp_name'])) {
        $name = rand(1,1000000000000);
        $uploadfile = $uploaddir . basename($name . ".png");
        if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
            echo $name . ".png";
        }
        else {
            print_r($_FILES);
        } 
    }
    else {
        echo "Upload Failed!!!";
        print_r($_FILES);
    }
?>
它工作得很好,唯一的一点是我得到的结果总是在每个文件前面加上这个。(它只是像那样回显,它确实正确地上传到我的服务器上) e、 g/uploads/ï»561708579306.png,而它必须是/uploads/561708579306.png 所以上传是正确的,它给出了正确的名称,即/uploads/561708579306.png,但是echo似乎在返回/uploads/ï»561708579306.png

有人有线索吗

诚恳地,
Jordy是的,这是一个BOM问题

我有两种想法

不带BOM保存upload.php(以及所有其他包含的php)

我知道的唯一方法是用记事本++保存它,然后从“编码”选项卡中选择“使用UTF-8编码而不使用BOM”

在echo之前删除任何其他输出

这似乎比另一种解决方案更好。 添加
ob_clean()在每次回显之前清除上面行中的数据


希望有帮助。

看起来像是BOM(字节顺序标记)它是可修复的吗?如何修复。您是否尝试过echo$uploadfile;相反无论如何,它似乎更准确。
Dim Client As System.Net.WebClient = New System.Net.WebClient
Client.Headers.Add("Content-Type", "binary/octet-stream")
Dim result() As Byte = Client.UploadFile("/uploading/upload.php", "POST", filename)
Dim s As String = System.Text.Encoding.UTF8.GetString(result, 0, result.Length)