代码之家  ›  专栏  ›  技术社区  ›  mkamthan

使用php将文件上载到mysql db

  •  0
  • mkamthan  · 技术社区  · 17 年前

    我希望用户通过我正在后台使用mysql在php中开发的webapp上传文件。 我想把这些文件存储在数据库中。我这样做面临着问题。 此外,一旦文件存储在数据库中,我们如何下载它,并在webapp(文件类型和文件的其他属性)中正确显示它。

    我使用的表单如下:

    <FORM METHOD="post" ACTION="fileUpload.php" ENCTYPE="multipart/form-data">
    <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="3000000">
    <INPUT TYPE="hidden" NAME="action" VALUE="upload">
    <TABLE BORDER="1"> <TR> <TD>Description: </TD> <TD><TEXTAREA NAME="txtDescription" ROWS="10" COLS="50"> </TEXTAREA></TD> </TR> <TR> <TD>File: </TD> <TD><INPUT TYPE="file" NAME="binFile"></TD> </TR> <TR> <TD COLSPAN="2"><INPUT TYPE="submit" NAME="Upload" VALUE="Upload"></TD> </TR> </TABLE> </FORM>

    但是当我提交它并打印出$后数组时,我得到: 数组([max_file_size]=>3000000[action]=>上载[txtDescription]=>jassfhjabsf[upload]=>上载)

    我无法理解文件内容“binfile”在哪里丢失。 有人能帮我吗?

    当做, 马扬克。

    3 回复  |  直到 17 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    您可能需要查看PHP手册的上载部分: Handling file uploads ;这可能是个好的开始;—)

    例如,您可能会看到文件的信息存储在 $_FILES 而不在 $_POST (见 POST method uploads )--至少,考虑到您的示例,我想您正在搜索 $邮政 ,而不是 $x文件 .

    在您的情况下,考虑到输入字段的名称为“ binFile “,您可能想使用 var_dump (或任何同等产品) $_FILEs['binFile'] ,看看里面是什么;-)

    那么,你可以用 is_uploaded_file move_uploaded_file 使用文件本身。


    那么,您确定要将文件的内容存储到数据库中,而不是磁盘上,只将文件的路径存储到数据库中吗?

    关于这一点,您可以看看这个问题及其答案: Storing Images in DB - Yea or Nay? --它不是特定于PHP的,但是这些想法仍然是正确的。

    也许吧 Where to store uploaded files (sound, pictures and video) 也有帮助;-)
    同样关于 Storing a small number of images: blob or fs? 和/或 Store pictures as files or in the database for a web app?

        2
  •  1
  •   Quassnoi    17 年前

    您上载的文件将转到上载目录。

    您可以通过查找 $_FILES['binFile']['tmp_name']

    您应该在脚本完成之前对该文件进行一些操作,否则Web服务器将删除它。

    您应该阅读文件的内容并将其放入 BLOB 列。

        3
  •  1
  •   stefita    17 年前

    它在tmp目录中,直到你移动它

    $userfile = $_FILES['binFil']['tmp_name'];
    move_uploaded_file($userfile , "somedir");
    

    后记你应该检测它是什么类型的

    $userfileExt = array_pop(explode(':', $userfile));