Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和JavaScript读取blob数据_Php_Javascript_Mysql_Blob - Fatal编程技术网

使用PHP和JavaScript读取blob数据

使用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

我有一个应用程序,允许用户通过web界面将一些文本数据保存到MYSQL数据库中。此外,他们还可以将文件附加到此文本,我将其保存到blob字段中。附加的文件类型是简单的.txt文件

我可以将此数据保存到数据库中,但检索时遇到问题。这就是我现在正在做的检索工作:

//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。不,没有区别。它不记录,它会在页面上回音