mysql数据库怎么保存pdf文件_显示存储在MySQL数据库PHP中的PDF文件

我试图在用户请求时在浏览器中显示存储在mysql数据库中的PDF文件。

MySQL表的结构:

CREATE TABLE `file` (

`id` Int Unsigned Not Null Auto_Increment,

`name` VarChar(255) Not Null Default 'Untitled.txt',

`mime` VarChar(50) Not Null Default 'text/plain',

`size` BigInt Unsigned Not Null Default 0,

`data` MediumBlob Not Null,

`created` DateTime Not Null,

PRIMARY KEY (`id`)

)php代码:

$query = "

SELECT `type`, `name`, `size`, `data`, `mime`

FROM `file`

WHERE `id` = {$id}";

$result = $dbLink->query($query);

if($result) {

// Make sure the result is valid

if($result->num_rows == 1) {

// Get the row

$row = mysqli_fetch_assoc($result);

// Print headers

header('Accept-Ranges: bytes');

header('Content-Transfer-Encoding: binary');

header("Content-Type: ".$row['mime']);

header("Content-Length: ".$row['size']);

header("Content-Disposition: inline; filename=".$row['name']);

echo $row['data'];

}

}将文件保存到数据库的代码:

if(isset($_FILES['uploaded_file'])) {

// Make sure the file was sent without errors

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

// Connect to the database

$dbLink = new mysqli('localhost', 'REDACTED',"REDACTED", 'pdfs');

if(mysqli_connect_errno()) {

die("MySQL connection failed: ".mysqli_connect_error());

}

// get all required data

$name = $dbLink->real_escape_string($_FILES['uploaded_file']['name']);

$type = $dbLink->real_escape_string($_FILES['uploaded_file']['type']);

$data = $dbLink->real_escape_string(file_get_contents($_FILES ['uploaded_file']['name']));

$size = intval($_FILES['uploaded_file']['size']);

// Create the SQL query

$query = "

INSERT INTO `file` (

`name`, `type`, `size`, `data`, `created`

)

VALUES (

'{$name}', '{$type}', {$size}, '{$data}', NOW()

)";

// Execute the query

$result = $dbLink->query($query);

// Check if it was successfull

if($result) {

echo 'Success! Your file was successfully added!';

}

else {

echo 'Error! Failed to insert the file'

. "

{$dbLink->error}
";

}但是,当我尝试查看PDF,Adobe阅读器开始加载,然后我收到此错误消息:

the file is damaged and could not be repaired.

am i doing something wrong?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值