Цитата:
|
Вот мои две формы. Первая не рабочая, вторая рабочая.
<form id="load_pic"> <input value="" title="Вставьте сюда прямую ссылку на фотографию товара с сайта поставщика" maxlength="300" id="sp_load_photo" placeholder="Доступные форматы: gif, jpg, png, bmp" type="text"> <input value="Закачать" onclick="" type="button"> </form> <form name="upload_form"> <div id="imageloadbutton"> <input id="photoimg" name="photos[]" multiple="true" type="file"> </div> <div id="imageloadstatus" style="display:none"> <img src="include/upload_photo/loader.gif" alt="Загрузка ..."> <span>Идет загрузка...</span> </div> </form> // функция ajax загрузки фото $('#photoimg').change(function() { var myfiles = $('#photoimg').prop('files'); for(var i = 0; i < count(file_data); i++){ var form_data = new FormData(); var file_dat000 = myfiles[i]; form_data.append('file', file_dat000); $.ajax({ url: 'include/upload_photo/ajax_upload.php', dataType: 'text', cache: false, contentType: false, processData: false, data: form_data, type: 'post', success: function(response){ $("#imageloadstatus").hide(); $("#imageloadbutton").show(); show_picture(response); }, error: function(){ $("#imageloadstatus").hide(); $("#imageloadbutton").show(); }, complete: function(){ $('#photoimg').val(''); }, }); } }); и обработчик ajax_upload.php: if (isset($_POST) and $_SERVER["REQUEST_METHOD"] == "POST") { if ( 0 < $_FILES['file']['error'] ) { echo 'Error: ' . $_FILES['file']['error'] . '<br>'; } else {.... .... $filename = stripslashes($_FILES['file']['name']); // полный путь файла ..... Подскажите, пожалуйста, как мне в этот обработчик отправить данные с первой формы, чтобы произошла загрузка временного файла с внешнего URL ? |
Цитата:
Проверка if (isset($_POST) никчемная да и отношение к $_FILES не имеющая, и $_SERVER["REQUEST_METHOD"] == "POST" выбросить тоже. Цитата:
В предыдущих темах ведь говорилось уже о добавлении товаров и изображений им. Эта форма/формы для добавления фото добавляемому товару или уже добавленному? |
товар есть. Нужно загрузить фото по ссылке, обработать его( переименовать, изменить размеры), переместить и прописать в БД принадлежность к данному ид товара
Но меня интересует только то что касается ссылки. Остальное я уже сделал |
Цитата:
|
Я чувствую что я уже где то близко:
<div style="padding:2px;font-size:8pt;">Загрузить с компьютера: <input id="test" type="text" name="url_file" style="width:200px" value="http://"> </div> <input value="Загрузить" type="button" style="width:100px;margin-left:136px" onclick="javascript:sss();"> function sss(){ var res=$('#test').val(); alert(res); $.ajax({ type: "POST", url: "include/upload_photo/ajax_upload.php", data: ("file_url="+res), dataType: "html", cashe: false, success: function(msg){ alert(msg); }, error: (function() { alert("Ошибка выполнения"); }), }); } if (isset($_POST) and $_SERVER["REQUEST_METHOD"] == "POST") { $contents = file_get_contents($_POST['file_url']); echo $contents; } Вот тут ошибку возвращает. Как мне правильно загрузить файл и привести его к $_FILES['file']?, чтобы продолжить в тех же функциях обработчика |
Цитата:
Цитата:
Одной формой можно добавлять как локальные файлы, так указывать загрузку сетевых файлов. <form> <div id="url_file"> <input name="file[]" /> </div> <div id="local_file"> <input type="file" name="file[]" /> </div> <input type="hidden" name="id" value="<?=$id?>" /> </form> Поле file[] бокса url_file можно клонировать тем самым определять для загрузки множество файлов. Поле file[] бокса local_file также может загружать множество файлов, нужно только проверять на клиенте при выборе файлов соответствие выбранного ограничениям накладываемых сервером. На сервере если передан id товара и если это действительно товар имеющийся в базе, а не просто число, то загрузка файлов, если массив $_FILES не пуст. Обходом в цикле загружаем файлы загруженные без ошибок - !file["error"][$i]. Если файл отвечает требованиям: тип, размер если определено, то file["tmp_name"][$i] передается в функцию на обработку: изменение размеров, обрезка, наложение логотипа и т.п. Если все Ок, эта функция генерирует имя файла, а не использует загруженное "Огурцы на грядке", даже если товар и огурец, и под этим именем сохраняет в указанном каталоге (если каталоги связаны к примеру с категориями, помимо id товара сервер должен знать и о категории). Эта же функция может обновлять и запись в базе о новом добавленном фото, либо возвращать его из функции, одновременно указывая им и удачное выполнение. Имена всех возвращенных функцией файлов одним запросом по окончании загрузки записать в базу. Если есть ошибки, то функция возвращает false. Если массив $_POST["file"] не пуст, то в цикле загружается сетевой файл по указанному url, также проверяется на условия по типу/размеру, и отдается в функцию на обработку. То есть, если есть загруженные $_FILES и указаны сетевые, то и те, и другие обрабатываются одной функцией. Либо одни из - локальные или сетевые. Если и то, и другое пусто - ошибка. |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Вот нашел в инете пример: $file = 'https://www.google.ru/images/srpr/logo11w.png'; $file_name = basename('https://www.google.ru/images/srpr/logo11w.png'); file_put_contents('my_folder'.$file_name, file_get_contents($file)); И как из этого примера потом получить ссылку на временный файл? |
Часовой пояс GMT +3, время: 02:04. |