【发布时间】:2022-01-24 12:46:34
【问题描述】:
搜索了一段时间后,我仍然卡住了,我需要帮助。
对于个人项目,我需要一个询问信息的 js 表单以及一张照片。 js 脚本允许选择照片的一部分并将照片转换为正确的大小和扩展名(首先cropper-js 和图像转换之后)。 有了这个,我就有了一个 blob 文件。
var params = new URLSearchParams();
params.append("data1", document.data1);
params.append("data2", document.data2);
params.append("data3", document.data3);
params.append("data4", document.data4);
params.append("blob", blob);
const config = {
headers: {
"Content-Type": "multipart/form-data",
},
};
axios.post(url_to_php_file, params, config).then((res) => {
console.log(blob);
}
在 console.log 中,我可以看到我的 blob 对象(如果我更改照片,大小会发生变化)
Blob {size: 49759, type: 'image/jpeg'}
用php,我插入mysql db
function fonctioninsert($table,$valeurs) {
global $bdd;
global $prefix_tables;
$requete = 'INSERT INTO '.$prefix_tables.$table.'(';
$i = 0;
foreach ($valeurs as $key => $value) {
if ($i != 0) {
$requete .= ',';
}
$requete .= $key;
$i++;
}
$i = 0;
$requete .= ') VALUE (';
foreach ($valeurs as $key => $value) {
if ($i != 0) {
$requete .= ',';
}
$requete .= "'".$value."'";
$i++;
}
$requete .= ')';
$req = $bdd->prepare($requete);
$req->execute();
//$req->closeCursor();
return $req;
}
$table = "table1";
unset($valeurs);
$valeurs = array(
"data1" => $_POST["data1"],
"data2" => $_POST["data2"],
"data3" => $_POST["data3"],
"data4" => $_POST["data4"],
"blob" => $_POST["blob"]
);
fonctioninsert($table,$valeurs);
进程在db中插入数据但是blob列(LONGBLOB类型)还是和13o一样。即使我改变照片的大小。 我尝试使用 $_FILE,但在这种情况下,mysql blob 列中没有任何内容。
这就像 php 什么也没收到和/或在 db 中插入一个空 blob。
有谁知道我哪里出错了?
【问题讨论】:
-
尝试使用
FormData而不是URLSearchParams -
我还会在 blob 参数中测试 javascript 传输到 php 的值。如果该值已经不正确,那么您就知道问题不在于 php 和 mysql
-
我试过了,但是使用 FormData,我在 mysql blob 列中总是什么都没有。
-
检查我发送的内容是个好主意。在 js 脚本中,在附加参数之前,我有一个 blob 对象,但在附加之后,我的值中有一个文件,然后 php 接收一个文件而不是 blob。在将文件插入 mysql 之前,我必须将文件转换为 blob。我尝试使用 file_get_contents 但尚未成功。感谢您的支持。
标签: javascript php mysql axios blob