为什么这个php mkdir/uniqid不工作?
我有一段代码,它应该创建一个随机目录并将上传移动到那里:为什么这个php mkdir/uniqid不工作?,php,random,file-upload,mkdir,Php,Random,File Upload,Mkdir,我有一段代码,它应该创建一个随机目录并将上传移动到那里: $uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . mkdir( 'assets/post/email_uploads/{uniqid(attachment_)}', 0777 ) . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ]; 路径assets/post/email\u uploads/已经存在,因此随机文件夹应该
$uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . mkdir( 'assets/post/email_uploads/{uniqid(attachment_)}', 0777 ) . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ];
路径assets/post/email\u uploads/
已经存在,因此随机文件夹应该放在email\u uploads
中。我面临的问题是如何在目录分隔符
之间放置内容,让所有内容都正常工作
当我尝试mkdir('assets/post/email\u uploads/{uniqid(附件)}',0777)
或
mkdir('assets/post/email_uploads/'.uniqid(attachment_),0777)
-未创建文件夹,上载放在根目录下
当我尝试
$attchmentPath = 'assets/post/email_uploads/';
$uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . $attchmentPath.mkdir( uniqid(attachment_), 0777 ) . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ];
或
文件夹是在根目录下创建的,而不是在所需路径上创建的,并且文件根本不会上载。可能是这样的吗?应该引用
uniqid
的内容(除非它是常量),并且需要从单引号字符串中转义对uniqid
的函数调用
$dir=mkdir( __DIR__ . '/assets/post/email_uploads/'.uniqid('attachment_'), 0777 );
$name=$_FILES['file']['name'];
$uploadPath = $dir . DIRECTORY_SEPARATOR . $name;
您可以尝试使用递归函数来确保目录路径存在
function createpath( $path=NULL, $perm=0644 ) {
if( !file_exists( $path ) ) {
createpath( dirname( $path ) );
mkdir( $path, $perm, TRUE );
clearstatcache();
}
return $path;
}
$targetpath=__DIR__ . '/assets/post/email_uploads/'.uniqid( 'attachment_' );
$path=createpath( $targetpath );
echo $path;
我只需在
mkdir
中添加一个参数-TRUE
,就解决了这个问题。因此,功能代码是-mkdir($path,0777,TRUE)
其中$path
是要创建的目录的路径。echo'assets/post/email_uploads/{uniqid(附件)}代码>-现在这告诉你什么…?单引号还是双引号??函数调用需要在调用之前转义,如果要分析变量,则变量应该在双引号内-在单引号内,您看到的就是您想要的get@CBroe当我回显它按原样输出时-assets/post/email_uploads/{uniqid(附件)}
但当我回显'assets/post/email_uploads/'时。uniqid(附件)
它输出所需的路径,但仍然不会输出work@RamRaider我刚刚用双引号尝试了一下-没有成功我只是尝试了一下-如果你回显\uuu DIR\uuuuuu.'/assets/post/email\u uploads/”,则未创建uniqid
文件夹,文件上载到根目录之外。uniqid('attachment_u')
这会产生什么结果?F:\Projects\xxxxxx\yyyyyy\src/assets/post/email\u uploads/attachment\u 5a5f195cdd9c1
您对该文件夹路径具有写入权限吗?上载的文件位于F:
处,而随机文件夹未创建
function createpath( $path=NULL, $perm=0644 ) {
if( !file_exists( $path ) ) {
createpath( dirname( $path ) );
mkdir( $path, $perm, TRUE );
clearstatcache();
}
return $path;
}
$targetpath=__DIR__ . '/assets/post/email_uploads/'.uniqid( 'attachment_' );
$path=createpath( $targetpath );
echo $path;