gpt4 book ai didi

php - 使用php将多个pdf文件添加到blob

转载 作者:行者123 更新时间:2023-11-29 02:57:51 25 4
gpt4 key购买 nike

我必须使用 PHP 将遗留数据库迁移到 MySQL。旧系统的组件之一是一个大的 (>1000) 附件列表(主要是 .pdf,一些是 .doc/.docx)。

到目前为止,我已经完成了以下工作:

  1. 创建了 mysql 表,用一个 blob 来包含文件(这个方法有出于正当理由被选中)
  2. 导入除附件以外的所有数据
  3. 将所有附件提取到一个文件夹中,为每个文件命名一个唯一的名称
  4. 在 mysql 中添加并填充了一个包含附件唯一名称的列
  5. 创建了一个包含文件夹中所有附件全名的文件。

添加单个文件是我在堆栈中找到的唯一解决方案

但我的要求是递归地遍历文件名列表并在 mysql 中找到匹配的行,然后将文件从文件夹插入到 blob

例子...

我有一个文本文件,其中包含这样的条目(文件名、创建日期、大小)..

024048DE44C-RUE_MA.pdf,05/24/2013,80233 
024048DE44C-RUE.pdf,06/21/2013,85151
... (1000 more)

我在文件夹中有一个名为 024048DE44C-RUE_MA.pdf 的文件我在 mysql 数据库中有一行 filename 包含 024048DE44C-RUE_MA.pdf

我认为解决方案是这样的,但在中间位需要帮助。

$myfile = fopen("filelist.txt", "r") or die("Unable to open file!");
while(!feof($myfile)) {
$attfile =fgets($myfile);

...上传文件

// Check if a file has been uploaded
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', 'root', '', 'dbase');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}

// Gather all required data
$name = $dbLink->real_escape_string($_FILES['uploaded_file']['name']);
$mime = $dbLink->real_escape_string($_FILES['uploaded_file']['type']);
$data = $dbLink->real_escape_string(file_get_contents($_FILES ['uploaded_file']['tmp_name']));
$size = intval($_FILES['uploaded_file']['size']);

// Create the SQL query
$query = "
INSERT INTO `deal_attachment` (
`deal_att_name`, `deal_att_mime`, `deal_att_size`, `deal_att_content`, `deal_att_created`
)
VALUES (
'{$name}', '{$mime}', {$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'
. "<pre>{$dbLink->error}</pre>";
}
}
else {
echo 'An error accured while the file was being uploaded. '
. 'Error code: '. intval($_FILES['uploaded_file']['error']);
}

// Close the mysql connection
$dbLink->close();
}
else {
echo 'Error! A file was not sent!';
}

}
fclose($myfile);

最佳答案

如果你已经有一个包含文件名的表,为什么不直接使用 mysql LOAD_FILE 函数呢?

 UPDATE mytable SET blobdata=LOAD_FILE(concat("/path/to/", filename));

你的文件需要在你的 mysql 服务器上才能工作。

如果您唯一的问题是如何读取 CSV 文件,您可以这样做:

 list($filename,$date, $size)=explode(",", $attfile);

关于php - 使用php将多个pdf文件添加到blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28557634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com