Я собираюсь начать с PHP-скрипта для импорта базы данных csv.
У csv есть столбец с URL-адресами для изображений продуктов.
Что мне нужно сделать, это получить изображение, проверить, какой тип файла он (jpg, png и т. Д.), Изменить имя, сохранить файл в папку на сервере и затем вставить имя файла в базу данных.
Вставка в бит базы данных, которую я могу сделать, это переименование файла, с которым он смешивается.
Можно ли захватить такую информацию, как при загрузке файла, например:
Загрузка файла с использованием ввода файла в виде html
$_FILES['file']['name']; or $_FILES['file']['type'];
Если вы загружаете файл, возможно ли это
$downloaded_image['name']; or $downloaded_image['type'];
или это совершенно не важно?
Я никогда не делал этого раньше, и большинство ответов на stackoverflow не совсем отвечают на мой вопрос, поэтому я надеялся, что кто-то может указать мне в правильном направлении, как это сделать.
РЕДАКТИРОВАНИЕ / ОБНОВЛЕНО:
Будет что-то вроде этой работы, чтобы получить атрибуты файла …
$image_id = '123456'; $the_image = file_get_contents($downloaded_image); $image_name = $the_image['name']; $image_type = $the_image['type']; $new_name = $image_id . '.' . $image_type; $img_path = '/images/'; $save_image = file_put_contents($img_path, $new_name); if($save_image) { echo 'image saved'; } else { echo 'Not Saved'; }
Надеюсь, что это будет иметь смысл.
UPDATE: вот сценарий, который он (по-прежнему нуждается в убирании)
define('CSV_PATH','E:/xampp/htdocs/aff/csv-import/'); // path where your CSV file is located $csv_file = CSV_PATH . "infotuts.csv"; // Name of your CSV file $csvfile = fopen($csv_file, 'r'); $theData = fgets($csvfile); $i = 0; while (!feof($csvfile)) { $csv_data[] = fgets($csvfile, 1024); $csv_array = explode(",", $csv_data[$i]); $insert_csv = array(); $insert_csv['test_id'] = $csv_array[0]; // $insert_csv['test_aw_id'] = $csv_array[1]; // $insert_csv['test_name'] = $csv_array[2]; $image_id = $csv_array[1]; $download_image = $csv_array[2]; // Store the original filename $original_name = basename($download_image); // Original extension by string manipulation $original_extension = substr($original_name, strrpos($original_name, '.')); // ".jpg" // An array to match mime types from finfo_file() with extensions // Use of finfo_file() is recommended if you can't trust the input // filename's extension $types = array('image/jpeg' => '.jpg','image/png' => '.png','image/gif' => '.gif'); // Get the file and save it $img = file_get_contents($download_image); $stored_name = 'images/' . $image_id . $original_extension; if ($img) { file_put_contents($stored_name); // Get the filesize if needed $size = filesize($stored_name); // If you don't care about validating the mime type, skip all of this... // Check the file information $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_file($finfo, $stored_name); // Lookup the type in your array to get the extension if (isset($types[$mimetype])) { // if the reported type doesn't match the original extension, rename the file if ($types[$mimetype] != $original_extension) { rename($stored_name, 'images/' . $image_id . $types[$mimetype]); } } else { // unknown type, handle accordingly... } finfo_close($finfo); $query = "INSERT INTO test(test_id, test_aw_id, test_name) VALUES ('', '$image_id', '$stored_name')"; $n=mysqli_query($con, $query); $i++; } else { echo 'Could not get file'; } } fclose($csvfile);