gpt4 book ai didi

php - 尝试通过 PHP/MySQL 下载 Blob

转载 作者:行者123 更新时间:2023-11-29 21:19:13 25 4
gpt4 key购买 nike

这是我无法弄清楚的:我已经成功在网页上构建了上传功能,以将文件上传到 MySQL 数据库。当我进入服务器并通过 phpMyAdmin 打开它们时,它们看起来都很好...txt、jpg、pdf 等。

然而,在将这个东西(如下)放在一起下载之后,我遇到了一个奇怪的问题:所有文本文档(以及所有其他类型的文件,在我将扩展名更改为“txt”之后)都包含以下 HTML 代码页面本身,后面是原始内容!

此外,不同的浏览器在 POST 后的显示也不同。当尝试下载txt文件时,IE将在页面本身的ECHO中显示正确的数据(不下载),并在其前面显示错误消息:

Warning: Header may not contain more than a single header, new line detected. in C:\wamp\www\ace\dmain.php on line 82.

Line 82 is 'header("Content-length...'

Firefox 和 Chrome 都没有显示任何内容。他们只允许我下载它。

代码如下:

<?php
if (isset($_POST['downloadid'])) {
$fileid = $_POST['downloadid'];
try {
$sql = "SELECT * FROM `datastore` WHERE `id` = '".$fileid."'";
$results = $pdo->query($sql);echo $sql;
while ($row = $results->fetch()) {
$filename = $row['filename'];
$mimetype = $row['mimetype'];
$filedata = $row['filedata'];
header("Content-length: strlen($filedata)");
header("Content-type: $mimetype");
header("Content-disposition: download; filename=$filename"); //disposition of download forces a download
echo $filedata;
// die();
} //of While
} //try
catch (PDOException $e) {
$error = '<br>Database ERROR fetching requested file.';
echo $error;
die();
} //catch
} //isset
?>

最佳答案

这个:

header("Content-length: strlen($filedata)");

不会产生您期望的结果。如果您查看wireshark中的 header 或其他查看请求的方法,您将发现它不包含整数。

改用这个:

header("Content-length: ".strlen($filedata));

关于php - 尝试通过 PHP/MySQL 下载 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783970/

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