首页 > 解决方案 > 使用路径中的变量从 php 上传文件不起作用,但如果我添加了一个值则有效

问题描述

我正在尝试将文件从我的 c# 程序上传到 php 服务器,问题是当我将路径作为变量从 c# 发送到 php 文件($gradephp)时,它会将文件上传到文件夹(即使他读取了变量值使用 echo 语句),但如果我在 php 文件中设置变量值($gardephp="4"),它会正确上传

这是我的代码

<?php
    $servername="******";
    $server_username="***";
    $server_Password="****";
    $dbName="public";
    $gradephp=$_POST["gradephp"];
    $qphp=$_POST["qidphp"];

    $uploads_dir = "files/".$gradephp."/";
    echo $uploads_dir;

    if (file_exists($_FILES)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    if ($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["file"]["tmp_name"];
        $name = $_FILES["file"]["name"].$qphp;
        echo $gradephp.$qphp;
        move_uploaded_file($tmp_name, $uploads_dir.$name);
        echo "ok";
    }
?>

我也试过这个,但同样的问题发生了:

<?php
    $servername="******";
    $server_username="***";
    $server_Password="****";
    $dbName="public";
    $gradephp=$_POST["gradephp"];
    $qphp=$_POST["qidphp"];
    $x=$gradephp;
    echo $x;
    if ($x == "1") {
        $uploads_dir = "files/1/";
    }
    else if ($x == "2") {
        $uploads_dir = "files/2/";
    }
    else if ($x == "3") {
        $uploads_dir = "files/3/";
    }
    else if ($x == "4") {
        $uploads_dir = "files/4/";
    }
    else if ($x == "5") {
        $uploads_dir = "files/5/";
    }
    else if ($x == "6") {
        $uploads_dir = "files/6/";
    }
    else {
        echo "notfound";
    }
    echo $uploads_dir;
    if (file_exists($_FILES)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    if ($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["file"]["tmp_name"];
        $name = $_FILES["file"]["name"].$qphp;
        echo $gradephp.$qphp;
        move_uploaded_file($tmp_name, $uploads_dir.$name);
        echo "ok";
    }
?>

标签: c#phpunity3dfile-upload

解决方案


它用POST

$gradephp=$_POST["gradephp"];` 

您不能通过 URL 设置它,但必须使用表单发出 POST 请求。基本上这就是通常使用的原因POST:因此用户无法查看/操作 URL 中的值。

假设您使用的是 aUnityWebRequest.Post您可以将参数添加到例如MultiPartFormSectionlike

List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection("gradephp=4"));
formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));

using (var www = UnityWebRequest.Post("http://some.host.url", formData);
{
    yield return www.SendWebRequest();
}

但是,如果您希望能够像您的情况一样通过 URL 进行设置,例如

http://some.host.url?gradephp=4

而是使用GET

$gradephp=$_GET["gradephp"];

推荐阅读