уже некоторое время борется с проблемой, и надеюсь, что кто-то может помочь мне здесь.
Я создаю проект PHP для ввода элементов в базу данных и соответствующих изображений. Страница, которую я создал для ввода отдельного элемента и его изображения, работает гладко. Теперь я хотел бы создать еще одну страницу в своем проекте (которая использует уже работающие функции со страницы ввода отдельных элементов), где пользователь может автоматически выгружать элементы + изображения с помощью файла CSV, который выбирается с помощью ввода тип = файл вместе с все соответствующие изображения. Эти изображения не находятся в файле Excel, но хранятся в папке с именем c: \ Uploads и должны быть перемещены в другую папку + ссылка, добавленная в базу данных. Элементы имеют определенное имя (например, apple) в столбце A файла csv, а соответствующее изображение в папке «Uploads» называется, например, apple.jpg.
Сама загрузка файла csv работает нормально, но есть много проблем с изображениями. Они выбираются не из формы, а с помощью:
$dirContent = glob("uploads/ExcelUpload/*.{jpg,jpeg,gif,png,JPG,JPEG,PNG,GIF}", GLOB_BRACE);
Это дает мне массив файлов, но проблема в том, что мне нужен сам файл, а не путь к файлу в виде строки.
$handle = fopen($fileTmpName, "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$dt = new \DateTime("now", new \DateTimeZone("UTC"));
$now = $dt->format('Y-m-d H:i:s');
$data = json_encode($data,true);
$data = explode(";", $data);
$data[0] = ltrim($data[0],'"[');
$uniqueQuery = Items::findItemnumber($data[0]);
$itemnr = isset($uniqueQuery->itemnumber);
if ($itemnr != $data[0]){
$mainQuery = "INSERT into items (`user_id`,`item`,`name`,`alias`,`body`,`created_at`,`updated_at`)
values('".$user."','".$data[0]."','".$data[1]."','".$data[2]."','".$now."','".$now.")";
$result1 = $db->query($mainQuery);
foreach($dirContent as $f){
$e = 0;
$imageinfo = getimagesize($f);
$size = filesize($f);
$image = $f;
$f = json_encode($f,true);
$f = explode("/",$f);
$f[2] = rtrim($f[2],'"');
$f2 = explode(".",$f[2]);
if ($f2[0] == $data[0]){
$_FILES['itemImages']['name'] = explode(' ',$f[2]);
$_FILES['itemImages']['type'] = explode(' ',$imageinfo['mime']);
$_FILES['itemImages']['tmp_name'] = explode(' ',$image);
$_FILES['itemImages']['error'] = array_map('intval', explode(' ',$e));
$_FILES['itemImages']['size'] = array_map('intval', explode(' ',$size));
$uploads = new Uploads($_FILES['itemImages']);
itemImages::uploadItemImages($itemid->{'id'},$uploads);
Значение:
$_FILES['itemImages']['tmp_name']
Я получаю только строку, например "c: \ Uploads \ apple.jpg". Однако мне нужно, чтобы оно было реальным изображением (имя tmp, которое оно имеет при загрузке, как ввод данных на сервере). Уже пробовал много вещей, но, кажется, не нашел ничего полезного. Может кто-нибудь помочь мне?