如何从子域上传表单将上传的文件存储在主域的目录中

How to store uploaded files in a directory of the main domain from a subdomain upload form

请问如何将上传的文件存储在我的主域目录中,应该是这样的:

move_uploaded_file(https://example.com/uploads)

这将是一种快速而肮脏的方法(假设您位于子域的根目录中,并且您的主域是它自己的文件夹(如果您的主目录没有自己的文件夹,请删除第二个目录)

我假设您正在上传图片。如果不进行必要的更改

chdir(dirname("../"));// this takes you up one level
chdir("main_directory");// use this only if main directory is inside a folder

 $filepath = getcwd() . DIRECTORY_SEPARATOR . 'images' .DIRECTORY_SEPARATOR;
                if (!file_exists($filepath)) {
                    mkdir($filepath, 0755);// this is only to create a new images folder if it doesnt exist
                }
                chdir($filepath);
                $filename = 'file_name_you_want';
                $info = pathinfo($_FILES['img']['name']);
                $ext = $info['extension'];
                $newname = $filename . "." . $ext;
                $types = array('image/jpeg', 'image/jpg', 'image/png');
                if (in_array($_FILES['img']['type'], $types)) {
                    if (move_uploaded_file($_FILES["img"]["tmp_name"], $newname)) {
                        $img_path = 'images' . DIRECTORY_SEPARATOR . $newname;

                    } else {
                         // do what needs to be done
                    }

如果您使用的是 php 7,您可能需要查看字符串

 dirname ( string $path [, int $levels = 1 ] );// the 2nd param would be how many levels up you want to go and $path can be your current directory using __DIR__

第一步是从这里开始处理上传的文件:
http://php.net/manual/en/function.move-uploaded-file.php

第一个例子几乎就是你想要的:

<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        // basename() may prevent filesystem traversal attacks;
        // further validation/sanitation of the filename may be appropriate
        $name = basename($_FILES["pictures"]["name"][$key]);
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
?>

您需要进行两次编辑。 $uploads_dir 需要有文件上传位置的相对路径。假设您的表单位于 subdomain.example.com/ 中子域的根目录中,并且您想将它们移动到 public_html/uploads。您的新 $uploads_dir 应如下所示:

$uploads_dir = __DIR__ . '/../public_html/uploads';

__DIR__ 将为您提供当前目录,您的 php 文件位于 运行 中。这允许您创建到其他目录的相对路径。

第二个编辑是更新 $_FILES 数组以循环遍历您上传内容的正确结构。它可能不是示例中的图片。