Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在字符串中串联变量_Php_String_Variables - Fatal编程技术网

Php 在字符串中串联变量

Php 在字符串中串联变量,php,string,variables,Php,String,Variables,我在PHP中有一个简单的图像上传程序,它正在上传图像,但出于某种原因,它将图像添加到“uploads”目录中,而不是该目录中的文件夹中 变量$uploaddir似乎正在打印正确的字符串,我知道这一点,因为我使用$uploaddir重新命名了图像,并且我可以看到图像的名称与“uploads”文件夹中的文件夹名称相同 我在URL字符串和变量上做了很多搜索,但不能解决这个问题。这是我的密码: $uploaddir = "uploads/{$site_country}_{$site_state}_{$s

我在PHP中有一个简单的图像上传程序,它正在上传图像,但出于某种原因,它将图像添加到“uploads”目录中,而不是该目录中的文件夹中

变量$uploaddir似乎正在打印正确的字符串,我知道这一点,因为我使用$uploaddir重新命名了图像,并且我可以看到图像的名称与“uploads”文件夹中的文件夹名称相同

我在URL字符串和变量上做了很多搜索,但不能解决这个问题。这是我的密码:

$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}";

      $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

      echo "<p>";

      if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        echo "File is valid, and was successfully uploaded.\n";
      } else {
         echo "Upload failed";
      }
      echo "</p>";
$uploaddir=“uploads/{$site\u country}{$site\u state}{$site\u name}”;
$uploadfile=$uploaddir。基本名称($_文件['userfile']['name']);
回声“”;
如果(移动上传的文件($上传文件['userfile']['tmp\u name'],$uploadfile)){
echo“文件有效,已成功上载。\n”;
}否则{
echo“上传失败”;
}
回声“

”;
问题在于,您在构建文件路径时输入了一个打字错误

假设文件名为hello.png,则生成的
$uploadfile
当前为:

上传/usa_ny_foohhello.png

鉴于您想要:

上传/usa_ny_foo/hello.png

那么,在$uploaddir末尾添加一个
/
怎么样

$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}/";
或者以更合适的方式,您可以尝试以下方法:

$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}";
$uploadfile = $uploaddir . '/' . basename($_FILES['userfile']['name']);

我认为您需要添加
/

$uploadfile = $uploaddir .'/'. basename($_FILES['userfile']['name']);

您需要先创建一个目录

mkdir('uploads/'.$directoryname, 0777, true);
比如说

$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}/";
if(!is_dir($uploaddir))
{
if (!mkdir($uploaddir, 0777, true)) {
    die('Failed to create folders...');
}

你缺少反斜杠

$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}/";
您可能需要首先在


mkdir($uploaddir,0777,true)

您可以简单地使用。=运算符进行字符串连接<代码>$uploadfile.=basename($_FILES['userfile']['name'])对不起,我没有提到,文件夹已创建。然后执行此操作$uploaddir=“uploads/{$site\u country}{$site\u state}}{$site\u name}/”$\u FILES[“file”][“name”];如果(移动上传的文件($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\!谢谢lot@conor909很高兴能帮上忙