0
我有2子域:如何将一个子域的move_uploaded_file移动到另一个子域?
- admin.example.com - 管理面板
- static.example.com - 上传的文件
我怎么能使用move_uploaded_file
上传文件从第一个子域根到第二个子域根?
上传功能:
define('UPLOAD_DIR', '/home/.../static.example.com/htdocs/uploads/');
define('UPLOAD_ADDR', 'http://static.example.com/uploads/');
define('TEMP_DIR', '/home/.../admin.example.com/htdocs/temp/');
function upload_file($input, $upload_subdir) {
if (!file_exists($_FILES[$input]['tmp_name']))
return false;
$sha1file = sha1_file($_FILES[$input]['tmp_name']);
$tmp_name = TEMP_DIR . $sha1file;
$new_name = $upload_subdir . '/' . substr($sha1file, 0, 5) . '_' . $_FILES[$input]['name'];
move_uploaded_file($_FILES[$input]['tmp_name'], $tmp_name);
rename($tmp_name, UPLOAD_DIR . $new_name);
if (file_exists(UPLOAD_DIR . $new_name))
return $new_name;
else
return false;
}
测试:
upload_file('image' /* Input name */, 'images' /* subdir in UPLOAD_DIR (this is existing dir) */);
注:
- 服务器的操作系统是CentOS的
UPLOAD_DIR
和TEMP_DIR
是正确的绝对目录。另外我测试了相对目录不工作。- 我直接测试
move_uploaded_file
(没有复制文件到当前子域的临时目录)不起作用。 - 无警告显示
'move_uploaded_file()'不关心主机名/域。只需告诉它你想在哪里存储文件。如果要从脚本位置使用相对URL,则应该使用'__DIR__'来获取脚本的绝对路径:'upload_file(__ DIR__。'/ image')''。 –
如果出现问题,它几乎总是文件访问权限之一。尽管在子域中不应该这样。 – JBH
Magnus Eriksson。 '__DIR __。'image /''上传文件到当前的子域名 –