使用文件路径从PHP将文件插入SQL db

时间:2012-10-12 19:57:15

标签: php ajax path blob

我有一个使用AJAX插入一些值的表单,现在 我想添加一个图像,但我无法获得图像 只需使用中的超全局$ _FILE ['file_name']即可 PHP代码,导致与PHP的通信是在AJAX下。 所以我想知道我是否可以从PHP加载文件 使用文件的路径,事实上我可以简单地传递它 通过JS / AJAX。

或者它是一种允许我获取整个文件的方法 来自JS / AJAX的二进制代码,然后将其传递给PHP 和finallu把它放在SQL db的BLOB中?

Ps。:显然我必须使用ajax

3 个答案:

答案 0 :(得分:0)

如果文件已经存在于服务器上,我认为最好只通过AJAX将文件路径传递给PHP,并使用PHP的file_get_contents函数来读取它。

如果服务器上不存在该文件,您最好提交表单。在服务器上执行的PHP无法获取文件路径并从客户端获取文件。

如果你可以使用jQuery,你可以使用HTML表单并捕获提交事件,serialize将表单转换为变量,通过AJAX传递,并返回false以防止表单提交(导致页面)重装)。

<小时/> 的修改

第二个想法,serialize不是解决方案的唯一部分。这只会获得文件输入的值,而不是文件的内容。获取内容会更加乏味。看起来W3C正在研究something

可能最好只使用标准HTML表单。

答案 1 :(得分:0)

目前,AJAX不允许您上传文件。

您只需要使用传统方法。

然而,Firefox和Chrome有点可能。但是这种方法在IE中不起作用而且相当复杂。

修改

可以考虑让Javascript使用这个https://developer.mozilla.org/en-US/docs/DOM/FileReader,序列化并使用AJAX通过POST发布。有点复杂。 FileReader适用于Chrome和最新版本的Firefox。我认为它也适用于Safari和Opera(但不是100%肯定)。可能不适用于IE。

但是现在让所有浏览器都能正常工作会有点复杂。

答案 2 :(得分:0)

我没有任何关于通过AJAX上传文件的专业知识。但是,如果您需要帮助将文件作为BLOB插入数据库,我可以提供一些帮助。

使用PDO,相当容易。他们有一个专门介绍LOBs详细信息的页面。

$stmt = $db->prepare("INSERT INTO table (image) values (?)");

$fp = fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1, $fp, PDO::PARAM_LOB);

$stmt->execute();