artgrosvil
@artgrosvil
#dev #programming #student #startups #chill

Как загружать файлы на удаленный сервер?

Здравствуйте. Как загружать файлы на удаленный сервер в фреймворке codeigniter? Знаю что есть класс для работы с фтп, но тогда нужно сначала создавать файл на первом сервере, а потом уже копировать на второй. Это не круто, когда в потоке идет 1000+ файлов. Есть ли способ без временного файла?

Пока использую класс загрузки в codeigniter.
Обрабатываю картинки с помощью либы newImage. Сохраняю на сервер. Нужно реализовать сохранение на удаленный.

P.S. Пример реализации с созданием временного файла.
  • Вопрос задан
  • 669 просмотров
Решения вопроса 1
@Kostik_1993
Web Developer
Вот примитивный, не для CI но зато понятный, без загрузки на сервер никак не обойтись, но делается это по другому, мы просто загружаем во временную папку и сразу же из нее отдаем.
if (isset($_FILES)){
	    foreach ($_FILES['uploadfile']['name'] as $k=>$v){

            if($_FILES['uploadfile']['type'][$k] == "image/gif" || $_FILES['uploadfile']['type'][$k] == "image/png" || $_FILES['uploadfile']['type'][$k] == "image/jpg" || $_FILES['uploadfile']['type'][$k] == "image/jpeg"){
                $blacklist = array(".php", ".phtml", ".php3", ".php4");
                foreach ($blacklist as $item){
                    if(preg_match("/$item\$/i", $_FILES['uploadfile']['name'][$k])){
                        echo "Нельзя загружать скрипты.";
                        exit;
                    }
                }
				
				# сюда загружается файл на основном сервере
				$file = $_FILES['uploadfile']['tmp_name'][$k];
				
                                # адрес сервера
				$url = 'http://s1.site.ru/upload.php';
				
				$post = [
							'image'=> new CURLFile($file, mime_content_type($file), date('YmdHis').rand(100,1000)),
						];
				
				$ch = curl_init($url);

				curl_setopt($ch, CURLOPT_POST, 1);
				curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
				
				$result = curl_exec($ch);

            }
        }      				
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы