PHP - 如何使用这样的页面复制文件?

时间:2017-08-14 06:19:29

标签: php

this is error message我试图修复复制功能不运行。这是我的代码:

<?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>

为什么它不起作用?如何解决?

我正在

  

警告:copy(feel_like_doraemon.jpg):无法打开流:没有这样的文件或目录

4 个答案:

答案 0 :(得分:0)

由于['name']是文件名,而不是上传后的文件路径,而不是['name'],请尝试使用['tmp_name']

copy( $_FILES['file']['tmp_name'], "php5/image" ) or die( "Could not copy file!");

答案 1 :(得分:0)

这是因为上传的文件没有使用原始名称存储在服务器上,它们被赋予tmp_name索引中的临时文件名。此外,出于安全考虑,您应使用move_uploaded_file代替copy

您的目的地路径也需要存在。

答案 2 :(得分:0)

根据您的代码,您必须使用移动上传文件功能而不是复制。

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!");

}
?>

答案 3 :(得分:0)

上传文件时,您应使用move_uploaded_file将文件实际存储在所选目录中。此外,使用完整路径而不是相对路径对我来说总是更好 - 更改适用的行以适应您的环境。

<?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>