Я пытаюсь загрузить файл изображения в свою базу данных MySql. Я уже seacrh в Интернете, и я, наконец, начал использовать следующий скрипт:
if(is_uploaded_file($_FILES['filename']['tmp_name'])){ $maxsize=$_POST['MAX_FILE_SIZE']; $size=$_FILES['filename']['size']; // getting the image info.. $imgdetails = getimagesize($_FILES['filename']['tmp_name']); $mime_type = $imgdetails['mime']; // checking for valid image type if(($mime_type=='image/jpeg')||($mime_type=='image/gif')||($mime_type=='image/png')){ // checking for size again if($size<$maxsize){ $filename=$_FILES['filename']['name']; $imgData =addslashes (file_get_contents($_FILES['filename']['tmp_name'])); if(is_uploaded_file($_FILES['filename']['tmp_name'])){ debug('subida ok'); }else{ debug('fallo subida'); } //echo $imgData; $imgDetail=addslashes($imgdetails[3]); $db = new mysqli('127.0.0.1','user','pass', 'db'); if($db->connect_error){ debug('Error en la conexion : '.$db->connect_errno. '-'.$db->connect_error); } $stmt = $db->stmt_init(); $stmt->prepare("INSERT INTO `image` (`name`, `image`, `type`, `size`) VALUES (?, ?, ?, ?)"); if($stmt===false){ debug('Error en prepare');} $rc=$stmt->bind_param('sbss', $filename, $imgData, $mime_type,$imgDetail); if($rc===false){ debug('Error en bind');} if($stmt->execute()==false){ debug('error ' . $stmt->error); }; $stmt->close(); }else{ debug("<font class='error'>Image to be uploaded is too large..Error uploading the image!!</font>"); } }else{ debug("<font class='error'>Not a valid image file! Please upload jpeg or gif image.</font>"); } }else{ switch($_FILES['filename']['error']){ case 0: //no error; possible file attack! debug("<font class='error'>There was a problem with your upload.</font>"); break; case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini debug( "<font class='error'>The file you are trying to upload is too big.</font>"); break; case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form debug( "<font class='error'>The file you are trying to upload is too big.</font>"); break; case 3: //uploaded file was only partially uploaded debug( "<font class='error'>The file you are trying upload was only partially uploaded.</font>"); break; case 4: //no file was uploaded debug( "<font class='error'>You must select an image for upload.</font>"); break; default: //a default error, just in case! debug( "<font class='error'>There was a problem with your upload.</font>"); break; } }
Загруженное изображение, похоже, находится на выходе сценария ухода, но просмотр размера базы данных – 0 байт … Кто-нибудь знает, почему это?
mysqli SEND_LONG_DATA () !!!
http://php.net/manual/en/mysqli-stmt.send-long-data.php
Blobs, кажется, особенно расстраивает некоторые настройки сервера php / mysql (особенно с mysqli lib). Это решение, похоже, постоянно работает, когда настройки конфигурации не позволяют устранить проблему. Если его головная боль для повторной реализации, я бы предложил PDO.