PHP-如何使用这样的页面复制文件?
我正在尝试修复复制函数未运行的问题。这是我的代码:PHP-如何使用这样的页面复制文件?,php,Php,我正在尝试修复复制函数未运行的问题。这是我的代码: <?php if( $_FILES['file']['name'] != "" ) { copy( $_FILES['file']['name'], "php5/image" ) or die( "Could not copy file!"); } else { die("No file specified!"); } ?> <html> <head> <title>Uplo
<?php
if( $_FILES['file']['name'] != "" ) {
copy( $_FILES['file']['name'], "php5/image" ) or die( "Could not copy file!");
} else {
die("No file specified!");
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>
<body>
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name']; ?>
<li>File size: <?php echo $_FILES['file']['size']; ?> bytes
<li>File type: <?php echo $_FILES['file']['type']; ?>
</ul>
</body>
</html>
上传完成
上载的文件信息:
- 已发送文件:
- 文件大小:字节
- 文件类型:
为什么它不起作用?如何修复它
我要走了
警告:复制(feel_like_doraemon.jpg):无法打开流:没有这样的文件或目录
因为
['name']
是文件名,而不是上传后的文件路径,而不是['name']
尝试使用['tmp_name']
copy( $_FILES['file']['tmp_name'], "php5/image" ) or die( "Could not copy file!");
这是因为上传的文件不是使用原始名称存储在服务器上的,而是在
tmp\u name
索引中提供了一个临时文件名。此外,为了安全起见,您应该使用而不是copy
您的目标路径也需要存在。根据您的代码,您必须使用移动上传文件功能,而不是复制
Do as mentioned below.
<?php
if( $_FILES['file']['name'] != "" ) {
$tmp_name = $_FILES["file"]["tmp_name"];
$name = basename($_FILES["file"]["name"]);
move_uploaded_file($tmp_name, "php5/image/".$name)or die( "Could not copy file!");
//copy( $_FILES['file']['name'], "php5/image" ) or die( "Could not copy file!");
} else {
die("No file specified!");
}
?>
按以下所述操作。
上传文件时,应使用移动上传的文件
将文件实际存储在所选目录中。另外,使用完整路径而不是相对路径对我来说总是更好——更改适用的行以适应您的环境
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_FILES['file'] ) ){
try{
$obj=$_FILES['file'];
$name=$obj['name'];
$tmp=$obj['tmp_name'];
$dir=$_SERVER['DOCUMENT_ROOT'] . '/php5/image';
if( !realpath( $dir ) )throw new Exception( sprintf( 'unable to find target directory %s', $dir ) );
$target="{$dir}/{$name}";
if( is_uploaded_file( $tmp ) && move_uploaded_file( $tmp, $target ) ){
/* OK */
@unlink( $tmp );
} else {
/* error */
}
}catch(Exception $e ){
exit( $e->getMessage() );
}
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>
<body>
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name']; ?>
<li>File size: <?php echo $_FILES['file']['size']; ?> bytes
<li>File type: <?php echo $_FILES['file']['type']; ?>
</ul>
</body>
</html>
上传完成
上载的文件信息:
- 已发送文件:
- 文件大小:字节
- 文件类型:
显示您的上传表单请查看好的,问题已经解决:Drun打印($\u文件)
,您将在那里看到它。@YohanesAdiP不使用此方法,请使用移动上传的文件
!此方法不安全,已损坏,并将临时文件留在服务器上。请不要建议用户对目录授予777权限!在告诉人们这个危险的建议之前,先了解文件权限及其工作方式!请参阅:但是您必须使用移动上载文件而不是复制它将解决您的问题。由于您的错误建议,我对您投了反对票,直到您删除它为止。是否move\u upload\u file
将文件移出,这使您对取消链接的调用毫无意义?用@
来抑制错误是不可取的。好东西-您可能应该在保存前添加额外的检查来验证文件的类型和大小,从而使上述内容更具弹性-但很高兴它现在适用于Youn大括号。。。在取消链接之前使用@
将禁止任何此类操作error@RamRaider如果系统严重损坏,move\u uploaded\u file
失败,您将面临更大的问题。对unlink
的额外调用是完全无用的,会增加开销,并可能隐藏真正的错误