救命...!同一页面文件上传到mysql

时间:2010-01-30 04:59:14

标签: php fopen

所以我决定不使用uploadify,因为我无法获得任何帮助。我一直在努力实现一个更简单的解决方案。但不幸的是,我似乎无法在一个页面上处理上传代码而没有收到以下错误:

  

警告:fopen()[function.fopen]:   文件名不能为空   C:\ XAMPP \ htdocs中\ speedycms \ manageclient.php   在第205行

     

警告:fread()需要参数1   是资源,布尔值给出   C:\ XAMPP \ htdocs中\ speedycms \ manageclient.php   在第206行

     

警告:fclose()需要参数1   是资源,布尔值给出   C:\ XAMPP \ htdocs中\ speedycms \ manageclient.php   在第208行错误,查询失败

这是我一直试图开始工作的代码......你能建议任何方法让它在一个页面上工作而不是将它分成两个除了ajax(我不太熟悉)那... ...全部在一个页面上

任何帮助将不胜感激!

         <!-- upload file --->

             <?php
                     if (array_key_exists('uploadfile',$_POST)) {
    $fileName = $_FILES['userfile']['name'];
    $tmpName  = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];

    $fp      = fopen($tmpName, 'r');
    $content = fread($fp, filesize($tmpName));
    $content = addslashes($content);
    fclose($fp);

    if(!get_magic_quotes_gpc())
    {
        $fileName = addslashes($fileName);
    }

    $uploadQry = "INSERT INTO upload (name, size, type, content ) ".
    "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

    mysql_query($uploadQry) or die('Error, query failed'); 

    echo "<br>File $fileName uploaded<br>";
    exit;
                     }
    ?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . intval($client_id); ?>">
    <p>
         <b>File Upload</b></p>
    <p>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile"><BR />
               <input type="hidden" name="uploadfile" value="1"/> 
<input name="upload" type="submit" id="upload" value=" Upload ">
    </p>
    <p>      <a href="#viewFiles" class="form" rel="facebox">View files</a>

    </p>
    <div id="viewFiles" style="display:none;" rel="facebox"> 
      <div style="width:300px; height: 300px;"></div></div></form>

2 个答案:

答案 0 :(得分:1)

您需要set the correct encoding of your form才能启用文件上传:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    ...
</form>

编辑Filename cannot be empty告诉您在第一次调用fopen时没有指定文件名 - 您将$ tmpName传递给该方法,该方法是从$_FILES['userfile']['tmp_name']

我认为$_FILES['userfile']['tmp_name']为空的唯一原因是您实际上没有上传文件?

答案 1 :(得分:0)

错误消息显示在

$fp      = fopen($tmpName, 'r');

$ tmpName为空(或NULL)。

尝试查看$ _FILES以查看您的内容:

print serialize($_FILES);