使用PHP和JavaScript读取blob数据
我有一个应用程序,允许用户通过web界面将一些文本数据保存到MYSQL数据库中。此外,他们还可以将文件附加到此文本,我将其保存到blob字段中。附加的文件类型是简单的.txt文件 我可以将此数据保存到数据库中,但检索时遇到问题。这就是我现在正在做的检索工作:使用PHP和JavaScript读取blob数据,php,javascript,mysql,blob,Php,Javascript,Mysql,Blob,我有一个应用程序,允许用户通过web界面将一些文本数据保存到MYSQL数据库中。此外,他们还可以将文件附加到此文本,我将其保存到blob字段中。附加的文件类型是简单的.txt文件 我可以将此数据保存到数据库中,但检索时遇到问题。这就是我现在正在做的检索工作: //Events that take place when trying to retreive an attached file function getFile(rowid){ //Make an AJAX Request t
//Events that take place when trying to retreive an attached file
function getFile(rowid){
//Make an AJAX Request to fetch the file
$.ajax({
type: 'get',
url: 'point-of-contact.php',
data: 'page=attachment&row='+rowid,
dataType: 'text',
success: function(data) {
console.log (data);
}
});
}
上面的AJAX请求生成以下PHP代码:
$attachments = $poc -> getPOC($_GET['row']);
header('Content-type: text/plain');
echo $attachments;
我面临的问题是,当我将从AJAX请求接收到的数据记录到控制台日志中时,我会得到以下结果:
如何以简单的文本格式获取数据
可能是我上传文件到数据库的方式不正确吗?以下是文件上载到数据库的方式:
//File upload code
var fileInput = document.getElementById('upload');
var file = fileInput.files[0];
//Hide the save button
$("#save-button-1").hide();
//Make the AJAX request
$.ajax({
type: 'post',
url: 'point-of-contact.php?page=add',
data: 'point_of_contact=' + $("#textarea1").val() + '&point_of_contact_attachment=' + file,
success: function(data) {
$('#done-1').show();
setTimeout(function() {
$('#done-1').fadeOut();
}, 2500);
$('.loader').fadeOut();
}
});
尝试将浏览器直接指向文件,而不是使用ajax。 像这样
document.location = point-of-contact.php?page=attachment&row='+rowid;
因为它不是浏览器可以读取的文件,所以只需下载即可
但是,您仍然需要通过ajax获取TXT,因为document.location会将用户重定向到纯文本页面。尝试将浏览器直接指向文件,而不是使用ajax。 像这样
document.location = point-of-contact.php?page=attachment&row='+rowid;
因为它不是浏览器可以读取的文件,所以只需下载即可
但是,您仍然需要通过ajax获取TXT,因为document.location会将用户重定向到纯文本页面。上载部分有问题。线路
var file = fileInput.files[0];
将文件对象分配到文件
变量中。稍后,当您将其添加到
"point_of_contact_attachment="
它被转换为字符串。所以你会有
“联系人点附件=[对象文件]”
就是这样。上传部分有问题。线路
var file = fileInput.files[0];
将文件对象分配到文件
变量中。稍后,当您将其添加到
"point_of_contact_attachment="
它被转换为字符串。所以你会有
“联系人点附件=[对象文件]”
就是这样。为什么不将附件保存在一个大的文件数据库(您的文件系统)中,并在MySQL中存储可以找到它的路径?你知道,对于正确的工作来说,正确的工具等等。此外,你应该将
$\u GET['row']
,这样你就不会得到SQL注入。因为你称它为应用程序/octet流
,所以浏览器不知道它是什么。如果是纯文本,则以text/plain
@karancan的形式发送。设置ajax调用的属性数据类型:“text”
,而不仅仅是console.log(),查看网络选项卡并查看实际的http响应,以查看它是否是您期望的。请提供一个示例,以便我们可以实时检查它。另外,在网络面板中检查真正发送的头文件为什么不将附件保存在大型文件数据库(您的文件系统)中,并在MySQL中存储可以找到它的路径?你知道,对于正确的工作来说,正确的工具等等。此外,你应该将$\u GET['row']
,这样你就不会得到SQL注入。因为你称它为应用程序/octet流
,所以浏览器不知道它是什么。如果是纯文本,则以text/plain
@karancan的形式发送。设置ajax调用的属性数据类型:“text”
,而不仅仅是console.log(),查看网络选项卡并查看实际的http响应,以查看它是否是您期望的。请提供一个示例,以便我们可以实时检查它。另外,在网络面板中检查真正发送的头文件仅获取[object File]尝试删除头文件(“内容类型:text/plain”);等等,这很奇怪,document.location不应该记录任何东西,我很确定你仍然在使用ajax。不,没有区别。它不记录,它会回显到页面,仍然只获取[object File]尝试删除标题('Content-type:text/plain');等等,这很奇怪,document.location不应该记录任何东西我很确定你仍然在使用ajax。不,没有区别。它不记录,它会在页面上回音