首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法打开流:没有这样的文件或目录PHP

无法打开流:没有这样的文件或目录PHP
EN

Stack Overflow用户
提问于 2012-11-28 19:25:59
回答 1查看 3.7K关注 0票数 0

我有一个上传表单在一个php页面,它把一个csv文件到一个数据库。

代码语言:javascript
代码运行次数:0
运行
复制
Warning: move_uploaded_file(/public_html/csv/test/books.csv) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/blakeloi/public_html/csv/index.php on line 19

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpZw2e2X' to '/public_html/csv/test/books.csv' in /home/blakeloi/public_html/csv/index.php on line 19

这是错误的一行:

代码语言:javascript
代码运行次数:0
运行
复制
$upload_path = '/Users/blakeloizides/Desktop';

在:

代码语言:javascript
代码运行次数:0
运行
复制
if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.'/'.$_FILES['file']['name']))

最明显的答案是,我的文件目录路径是错误的,但我将文件夹放入浏览器并获得了正确的路径。我甚至尝试使用我的服务器/public_html/test上的一个文件夹,但这不起作用。

代码语言:javascript
代码运行次数:0
运行
复制
<?php

$message = null;

$allowed_extensions = array('csv');

$upload_path = '/Users/blakeloizides/Desktop';

if (!empty($_FILES['file'])) {

if ($_FILES['file']['error'] == 0) {

    // check extension
    $file = explode(".", $_FILES['file']['name']);
    $extension = array_pop($file);

    if (in_array($extension, $allowed_extensions)) {

        if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.'/'.$_FILES['file']['name'])) {

            if (($handle = fopen($upload_path.'/'.$_FILES['file']['name'], "r")) !== false) {

                $keys = array();
                $out = array();

                $insert = array();

                $line = 1;

                while (($row = fgetcsv($handle, 0, ',', '"')) !== FALSE) {

                    foreach($row as $key => $value) {
                        if ($line === 1) {
                            $keys[$key] = $value;
                        } else {
                            $out[$line][$key] = $value;

                        }
                    }

                    $line++;

                }

                fclose($handle);    

                if (!empty($keys) && !empty($out)) {

                    $db = new PDO('mysql:host=localhost;dbname=blakeloi_import-csv', 'blakeloi_root', 'password');
                    $db->exec("SET CHARACTER SET utf8");

                    foreach($out as $key => $value) {

                        $sql  = "INSERT INTO `books` (`";
                        $sql .= implode("`, `", $keys);
                        $sql .= "`) VALUES (";
                        $sql .= implode(", ", array_fill(0, count($keys), "?"));
                        $sql .= ")";
                        $statement = $db->prepare($sql);
                        $statement->execute($value);

                    }

                    $message = '<span class="green">File has been uploaded successfully</span>';

                }   

            }

        }

    }     else {
        $message = '<span class="red">Only .csv file format is allowed</span>';
    }

} else {
    $message = '<span class="red">There was a problem with your file</span>';
}

}

?>
    <!DOCTYPE HTML>
    <html lang="en">
    <head>
<meta charset="utf-8" />
<title>Upload CSV to MySQL</title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<link href="css/core.css" rel="stylesheet" type="text/css" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>

<section id="wrapper">  

<form action="" method="post" enctype="multipart/form-data">

    <table cellpadding="0" cellspacing="0" border="0" class="table">
        <tr>
            <th><label for="file">Select file</label> <?php echo $message; ?></th>
        </tr>
        <tr>
            <td><input type="file" name="file" id="file" size="30" /></td>
        </tr>
        <tr>
            <td><input type="submit" id="btn" class="fl_l" value="Submit" /></td>
        </tr>
    </table>

</form>

</section>

</body>
</html>

我的测试文件位于public_html/csv或http://www.blakeloizides.co.za/csv中,我希望将该文件上传到public_html/csv/ index.php或http://www.blakeloizides.co.za/csv/test

我对这两个文件夹的权限都是755。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-28 19:41:08

我必须将文件路径更改为/home/blakeloi/public_html/csv/test。这就是我使用/public_html/csv/test时的错误

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13603962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档