【问题标题】:Uploading pdf files to Mysql server将pdf文件上传到Mysql服务器
【发布时间】:2011-08-17 03:23:38
【问题描述】:

我无法上传使用 Photoshop 和 PDFTK 创建的 pdf 文档。其他 pdf 文档正在上传,没有任何问题。

我收到以下警告:

fread(): 提供的参数不是

中的有效流资源

警告:fclose():提供的参数 不是有效的流资源

【问题讨论】:

    标签: php mysql file uploading


    【解决方案1】:

    我不建议将 PDF 上传到 MySQL - 您必须将其保存为 BLOB,然后读取 BLOB。这会使您的数据库迅速膨胀并导致速度问题。

    相反,将 PDF 上传到文件系统,并将 PATH 保存到 MySQL 中的 PDF。然后您可以从 MySQL 中读取该路径。

    但是,如果您绝对需要将文件保存为 BLOB - 这是一个很好的教程: http://bytes.com/topic/php/insights/740327-uploading-files-into-mysql-database-using-php

    【讨论】:

    • @Avisra,保存在数据库中的一个好处是您不会因为重命名等而丢失这些文件,因此保存在数据库中可能是一个好主意,在这个问题上意见分歧很大。不过,在性能方面你是对的。
    • 抱歉,我只保存为 BLOB 来上传它们。这里的问题是当我上传从 Photoshop 和 PDFTK 创建的 pdf 时收到警告。
    • 这是一个很好的观点。我见过内容管理系统(如 Sitefinity)使用相同的方法。它将文档保存为 BLOB,然后将它们读入。真正酷的是某种支持它的缓存系统。如果文件内容或路径没有改变 - 从服务器上的缓存文件中读取。否则,从 MySQL 读取 BLOB 并重新缓存。
    • @Sanch,您能否发布您当前用于上传到 MySQL 的 PHP 代码以及用于拉入 BLOB 的代码? (您使用 fread 的地方)。
    • $fileName = $_FILES['userfile']['name']; $tmpName = $_FILES['userfile']['tmp_name']; $fileSize = $_FILES['userfile']['size']; $fileType = $_FILES['userfile']['type']; if($fileName !="") { $fp = fopen($tmpName, 'r'); $content = fread($fp, 文件大小($tmpName)); $content = addlashes($content); fclose($fp); } if(!get_magic_quotes_gpc()) { $fileName = addlashes($fileName); } //$fileName=str_replace(" ","_",$fileName); $query = "INSERT INTO upload (name, size, type, content,topic,country,dc) VALUES ('$fileName', '$fileSize', '$fileType', '$content','$topic',' $country','$dc')";
    猜你喜欢
    • 2019-05-16
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2020-10-14
    相关资源
    最近更新 更多