需要关于使用Javascript FileReader将图像文件作为文本获取的帮助吗

需要关于使用Javascript FileReader将图像文件作为文本获取的帮助吗,javascript,php,image,file,filereader,Javascript,Php,Image,File,Filereader,我一直在寻找通过AJAX将图像插入数据库的方法。 我不想通过表单提交,而是想将图像文件转换成文本(longblob),然后通过POST变量将其发送到PHP脚本,这样我就可以通过$_POST['var_name']访问它们,然后通过SQL正常插入它们,但问题是,Javascript文件阅读器无法返回有效的图像文本,就像您通常使用fopen和fread函数从PHP端获取一样。我需要找到一种方法将图像转换为文本(longblob),以便将它们插入表中 我尝试使用FileReader,然后选择了File

我一直在寻找通过AJAX将图像插入数据库的方法。 我不想通过表单提交,而是想将图像文件转换成文本(longblob),然后通过POST变量将其发送到PHP脚本,这样我就可以通过$_POST['var_name']访问它们,然后通过SQL正常插入它们,但问题是,Javascript文件阅读器无法返回有效的图像文本,就像您通常使用fopen和fread函数从PHP端获取一样。我需要找到一种方法将图像转换为文本(longblob),以便将它们插入表中

我尝试使用
FileReader
,然后选择了
FileReader.readAsText
,但结果似乎对数据库中的longblob类型无效

// Here is in the JavaScript //

let image_file = document.getElementById("upload_image").files[0];
let vars = "image_data=";

let fileReader = new FileReader();
fileReader.onloadend = function()
{
   // I pass in callback function, so I get this.result to assign else where
    callBack(this.result);
}

fileReader.readAsText(image_file);

// Then, I concat the image text to the vars variable
vars += result;

/* By this time vars would be "image_data=#$@#$DGJ#J$@#!$#@$@$..."(some 
   converted string),but the problem is this image_data does not contain 
   the correct image string (when get from $_POST on the PHP side) . I 
   would like to know if there're any ways to get the correct image 
   string as if it's obtained by using fopen, then fread function on the 
   PHP side*/
下面是PHP中正确的图像字符串

����JFIF``��领先技术公司V1.01��� ��� }!1AQa“q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������������������������������������������������������������������������w!1AQaq“2�B���� #3R�溴� $4.�%�&'()56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������"0��?�ۭD��V02��7.��K����"��:���Kc�J��}������2c��8.�J�#���9^W���B�L��C���Ո�LFW2�'�=G��Զ3���6.��?�J��[b,޿(��%o;�&[p:����Ƭ��lM�c*�O� �N�6.��df�Y�>8.�t9�rNd��(��[��݋��kxc��Ҹn۸\�Ү���;�1.����^�N��%用户体验���.$%�Q�)�^�静脉曲张�锂�'ʸ

使用fopen和fread函数打开后的图像文件字符串。我回显的真实文本有20000多个字母长,但在JavaScipt FileReader上,它给了我这个

����JFIF``��领先技术公司V1.01��� ��� }!1AQa“q2���#B��R��$3br� %


是的,就是这样!正如你所看到的,两个结果几乎相同。我很想知道为什么我没有从JavaScript FileReader获得相同的PHP脚本文本。有人知道如何解决这个问题吗?或者请给出一些关于通过AJAX发送文件的建议。非常感谢。

为什么要这样做?只发送文件会更容易通过AJAX/FormData(或通过常规表单提交)提交文件.PHP完全能够接收上传的文件。如果您需要获取内容以便在SQL中使用它,您可以使用您已经了解的技术在PHP中实现。我忍不住觉得您将这个简单的任务复杂化了。是否有任何方法将图像转换为文本并通过post或get变量发送到服务器端脚本?作为文本读取将url转义某些字符请尝试
FileReader.readAsBinaryString()
instead@piyapank也许有,但再次强调…为什么?保持代码简单。让JavaScript上传文件。让PHP处理文件并将数据插入数据库。很可能,在JS中将其转换为字符串也会使您的上传稍大一些,这会降低效率,因为在浏览器中使用处理时间来完成一些不必要的事情必要的。这样做没有意义,你也没有解释你为什么需要这样做。我强烈建议你把时间和精力花在更有用的事情上。另外,你问“也许请给出一些关于通过AJAX发送文件的建议”…你可以在20秒内用谷歌搜索它,只需搜索“AJAX文件上传”或者类似的。下面是一个使用jQuery的示例:。下面是另一个使用fetch():。和另一个:。您可以很容易地找到几十个(如果不是几百个)类似的教程和示例。