php将pdf文件存入数据库,如何使用PHP将.pdf文件存储为MySQL作为BLOB?

假设一个整数ID和一个Blob DATA列的表结构,并假设MySQL函数被用来与数据库进行接口,那么你可能会这样做:

$result = mysql_query 'INSERT INTO table (

data

) VALUES (

\'' . mysql_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf')) . '\'

);';

尽管如此,在数据库中存储blob通常不被认为是最好的想法,因为它可能导致表膨胀并且与其相关联的一些其他问题.更好的方法是将文件移动到可以检索的文件系统中的某个位置,并将文件的路径存储在数据库中而不是文件本身.

此外,使用mysql_ *函数调用是不鼓励的,因为这些方法被有效地不推荐使用,并不是真正构建的,而是MySQL的新版本,而不是4.x.你应该切换到mysqli或PDO.

更新:PHP 5.x中已弃用mysql_ *函数,并在PHP 7中完全删除!您现在别无选择,只能切换到更现代的数据库抽象(MySQLI,PDO).由于历史原因,我决定将原始答案提交到完整的位置,但实际上并没有使用它

下面是在程序模式下如何使用mysqli:

$result = mysqli_query ($db, 'INSERT INTO table (

data

) VALUES (

\'' . mysqli_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf'), $db) . '\'

);');

理想的方法是使用MySQLI / PDO准备的语句.

在后端处理将PDF文件转换为字节数组(byte[])并存储数据库中的过程通常包括以下步骤: 1. 读取PDF文件:首先,你需要使用文件IO操作读取PDF文件的内容。这可以通过Java中的`FileInputStream`类或者Spring框架中的`MultipartFile`等接口来完成。 2. 转换为字节数组:将读取到的文件内容转换为字节数组。这一步通常涉及到流的操作,你可以使用`InputStream`的`readAllBytes()`方法将整个文件内容读入内存,形成一个byte[]。 3. 存储数据库:创建一个对应数据库表的实体对象,并将字节数组作为该对象的一个属性。使用JDBC或者ORM框架(如Hibernate,MyBatis,JPA等)执行SQL语句或者使用框架提供的方法将对象保存到数据库中。 4. 选择合适的数据库列类型:存储字节数组时,需要选择一个合适的数据类型。通常,二进制大对象(BLOB)类型是存储大型二进制文件的首选。 下面是一个简化的Java代码示例,展示如何读取PDF文件并将其存储为byte[]: ```java import java.io.InputStream; public class PdfUtil { public static byte[] convertPdfToByteArray(InputStream pdfInputStream) { try { return pdfInputStream.readAllBytes(); } catch (Exception e) { // 处理异常 } return null; } } // 使用示例 // 假设你有一个FileInputStream对象pdfInputStream FileInputStream pdfInputStream = new FileInputStream(new File("path/to/your/file.pdf")); byte[] pdfBytes = PdfUtil.convertPdfToByteArray(pdfInputStream); // 现在pdfBytes包含了PDF文件的字节数组,你可以将其存储数据库中 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值