2012-02-23 3 views
0

Im пытается получить изображение с использованием передачи файлов API найден по адресу:PhoneGap передачи файлов API для Mysql PHP

http://docs.phonegap.com/en/1.0.0/phonegap_file_file.md.html#FileTransfer

в базу данных Mysql. В настоящее время я могу получить его на сервере без каких-либо проблем, однако я не могу найти никаких учебников/фрагментов кода о том, как вы могли бы получить его в Mysql. В настоящее время у меня есть код ниже, но он просто возвращает «без изображения» каждый раз.

Если у кого-то есть совет, ссылки и т. Д., То это будет очень полезно.

// Create MySQL login values and 
// set them to your login information. 
$username = ""; 
$password = ""; 
$host = ""; 
$database = ""; 

// Make the connect to MySQL or die 
// and display an error. 
    $link = mysql_connect($host, $username, $password); 
if (!$link) { 
die('Could not connect: ' . mysql_error()); 
} 

// Select your database 
mysql_select_db ($database); 

// Make sure the user actually 
// selected and uploaded a file 
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

    // Temporary file name stored on the server 
    $tmpName = $_FILES['image']['tmp_name']; 

    // Read the file 
    $fp  = fopen($tmpName, 'r'); 
    $data = fread($fp, filesize($tmpName)); 
    $data = addslashes($data); 
    fclose($fp); 


    // Create the query and insert 
    // into our database. 
    $query = "INSERT INTO tbl_images "; 
    $query .= "(image) VALUES ('$data')"; 
    $results = mysql_query($query, $link); 

    // Print results 
    print "Thank you, your file has been uploaded."; 

} 
else { 

print «Изображение отсутствует/загружено»; }

// Close our MySQL Link 
mysql_close($link); 

ответ

0
  1. addslashes() является устаревшим, ненадежны, и заставит вас горе. Не используйте его для операций с базой данных. Вот почему есть mysql_real_escape_string()
  2. У вас есть недействительный метод проверки успешной загрузки. Данные _FILES будут заполнены тем, что вы проверяете, но он по-прежнему заполняется этим, даже если загрузка не удалась. Вы должны проверить $_FILES['image']['error'] == UPLOAD_ERR_OK, чтобы убедиться, что DID для загрузки успешно выполнен.
  3. Нет необходимости в материалах fopen/fread/filesize. Простой file_get_contents() сделает это для вас с меньшими проблемами.
  4. У вас нет проверки на ошибки в операциях с базой данных, и предположим, что все они преуспели. Это очень плохо. Даже если ваши SQL-инструкции прекрасно написаны, существует любое количество других причин, по которым запрос может завершиться неудачно. В частности, когда вы вставляете капли, вы не проверяете, насколько велик файл, и слепо вставляете его в запрос - это может легко превысить настроенный max_allowed_packet MySQL, убивая запрос. Вы ДОЛЖНЫ проверять на отказ запроса с mysql_query(...) or die(mysql_error()); как голый вариант mininum.
Смежные вопросы