Javascript 在php中上载图像时出错
我在我的网站上有一个图片上传选项,当用户上传图片时,它会进入数据库,并显示在主页上。我已经完成了以下代码: 对于add.phpJavascript 在php中上载图像时出错,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我在我的网站上有一个图片上传选项,当用户上传图片时,它会进入数据库,并显示在主页上。我已经完成了以下代码: 对于add.php 看起来您正试图将图像直接插入表中。根据我到目前为止的经验,它不是那样工作的 PHP中文件的基本上载是通过使用move\u upload\u file函数完成的。你可以得到更多的细节 当您通过file HTML元素在PHP中上传文件时,它将被上传到一个临时位置,并在$\u FILES数组中为您提供详细信息。您可以在$\u FILES数组中找到完整的文件信息,如文件名、
看起来您正试图将图像直接插入表中。根据我到目前为止的经验,它不是那样工作的
PHP中文件的基本上载是通过使用move\u upload\u file
函数完成的。你可以得到更多的细节
当您通过file HTML元素在PHP中上传文件时,它将被上传到一个临时位置,并在$\u FILES
数组中为您提供详细信息。您可以在$\u FILES
数组中找到完整的文件信息,如文件名、大小、mime类型、临时名称和错误
因此,您应该先将文件上载到目标文件夹,然后再将其插入数据库。因此,您需要创建一个上载函数:
function uploadFile($file) {
$destination = "[YOUR DESTINATION FOLDER PATH]";
if ($file['errors'] == 0) {
$fileNameSplit = explode('.', $file['name']);
$newFileName = $fileNameSplit[0] . time() . $fileNameSplit[1];
$uploadPath = $destination . DIRECTORY_SEPARATOR . $newFileName;
if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
return $newFileName;
}
}
return null;
}
您必须在插入查询之前调用此函数。因此,您的代码如下所示:
public function insert($table, $data){
$uploadedFileName = uploadFile($_FILES['image']);
if (!empty($uploadedFileName)) {
$data['image'] = $uploadedFileName;
}
if(!empty($data) && is_array($data)){
$columns = '';
$values = '';
$i = 0;
if(!array_key_exists('created',$data)){
$data['created'] = date("Y-m-d H:i:s");
}
if(!array_key_exists('modified',$data)){
$data['modified'] = date("Y-m-d H:i:s");
}
foreach($data as $key=>$val){
$pre = ($i > 0)?', ':'';
$columns .= $pre.$key;
$values .= $pre."'".$this->db->real_escape_string($val)."'";
$i++;
}
$query = "INSERT INTO ".$table." (".$columns.") VALUES (".$values.")";
$insert = $this->db->query($query);
return $insert?$this->db->insert_id:false;
}else{
return false;
}
}
试试这个。根据您的逻辑,代码中可能需要一些小的修改。我已将$\u FILES['image']
作为参数传递,但您也可以在上载函数中直接使用$\u FILES
数组,而无需向其传递任何内容
另外请注意,您也必须在编辑功能中使用相同的逻辑,但我想您可以这样做。如果没有,请告诉我
希望这有帮助。看起来您正试图将图像直接插入表中。根据我到目前为止的经验,它不是那样工作的
PHP中文件的基本上载是通过使用move\u upload\u file
函数完成的。你可以得到更多的细节
当您通过file HTML元素在PHP中上传文件时,它将被上传到一个临时位置,并在$\u FILES
数组中为您提供详细信息。您可以在$\u FILES
数组中找到完整的文件信息,如文件名、大小、mime类型、临时名称和错误
因此,您应该先将文件上载到目标文件夹,然后再将其插入数据库。因此,您需要创建一个上载函数:
function uploadFile($file) {
$destination = "[YOUR DESTINATION FOLDER PATH]";
if ($file['errors'] == 0) {
$fileNameSplit = explode('.', $file['name']);
$newFileName = $fileNameSplit[0] . time() . $fileNameSplit[1];
$uploadPath = $destination . DIRECTORY_SEPARATOR . $newFileName;
if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
return $newFileName;
}
}
return null;
}
您必须在插入查询之前调用此函数。因此,您的代码如下所示:
public function insert($table, $data){
$uploadedFileName = uploadFile($_FILES['image']);
if (!empty($uploadedFileName)) {
$data['image'] = $uploadedFileName;
}
if(!empty($data) && is_array($data)){
$columns = '';
$values = '';
$i = 0;
if(!array_key_exists('created',$data)){
$data['created'] = date("Y-m-d H:i:s");
}
if(!array_key_exists('modified',$data)){
$data['modified'] = date("Y-m-d H:i:s");
}
foreach($data as $key=>$val){
$pre = ($i > 0)?', ':'';
$columns .= $pre.$key;
$values .= $pre."'".$this->db->real_escape_string($val)."'";
$i++;
}
$query = "INSERT INTO ".$table." (".$columns.") VALUES (".$values.")";
$insert = $this->db->query($query);
return $insert?$this->db->insert_id:false;
}else{
return false;
}
}
试试这个。根据您的逻辑,代码中可能需要一些小的修改。我已将$\u FILES['image']
作为参数传递,但您也可以在上载函数中直接使用$\u FILES
数组,而无需向其传递任何内容
另外请注意,您也必须在编辑功能中使用相同的逻辑,但我想您可以这样做。如果没有,请告诉我
希望这能有所帮助。您能告诉我您在上述代码中尝试将文件上载到哪里吗?看起来您正在尝试将图像直接插入数据库。这样不行。让我写一个答案,你可以试试。@KishenNagaraju如果你告诉我getRows()
方法看起来不安全,那将是一个很大的帮助。你能告诉我你在上面提到的代码中试图将文件上传到哪里吗?看起来像是你试图将图像直接插入数据库。这样不行。让我来写一个答案,你可以试试。@KishenNagaraju如果你告诉我getRows()
方法看起来不安全,那将是一个很大的帮助。