如何从子域上传表单将上传的文件存储在主域的目录中
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
数组以循环遍历您上传内容的正确结构。它可能不是示例中的图片。
请问如何将上传的文件存储在我的主域目录中,应该是这样的:
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
数组以循环遍历您上传内容的正确结构。它可能不是示例中的图片。