file_get_contents дает мне не удалось открыть поток - PullRequest
0 голосов
/ 14 января 2012

У меня есть простой код CI (CodeIgniter). я хочу сделать следующее: когда я ввожу путь к картинкам в textarea, php загрузил каждую картинку на свой сервер и дал им имена файлов, но у меня есть следующие ошибки:

Message: file_get_contents(http://geosmiley.ge/Upload/Product/42/1.jpg ) [function.file-get-contents]: failed to open stream: Invalid argument

Message: file_get_contents(http://geosmiley.ge/Upload/Product/42/2.jpg ) [function.file-get-contents]: failed to open stream: Invalid argument

Вот мой код CI:

$image = explode("\n", $_POST['images']);
for ($i = 0; $i < count($image); $i++){
    if (substr($image[$i], 0, strlen($this->host) - 1) != $this->host){
        file_put_contents('images/'.$title_url.'_'.$i.'.jpg', file_get_contents($image[$i]));
        $image[$i] = $this->host.'/images/'.$title_url.'_'.$i.'.jpg';                                
    }
}
$poster = $image[0];
$images = implode("\n", $image);

Он просто загружает последний файл, а для первого и второго файлов выдает эту ошибку

и, пожалуйста, не давайте мне других советов, таких как использование cURL of fopen. Я думаю, что это правильный путь, потому что php успешно скачивает LAST FILE. Пожалуйста, помогите мне решить мою проблему

Ответы [ 3 ]

3 голосов
/ 14 января 2012

Из руководства :

URL может использоваться в качестве имени файла с этой функцией, если fopen обертки были включены.

Вам нужно будет либо установить allow_url_fopen в true, либо использовать cURL .

1 голос
/ 19 января 2012

Я не знаю, почему возникла проблема, но вот код, который ее исправил, благодаря "NikiC", который обнаружил, что это было ", - я исправил это.

Этот код не работает

$image = explode("\n", $_POST['images']);
for ($i = 0; $i < count($image); $i++){
    if (substr($image[$i], 0, strlen($this->host) - 1) != $this->host){
        file_put_contents('images/'.$title_url.'_'.$i.'.jpg', file_get_contents($image[$i]));
        $image[$i] = $this->host.'/images/'.$title_url.'_'.$i.'.jpg';                                
    }
}
$poster = $image[0];
$images = implode("\n", $image);

Это рабочий код

$image = explode("\n", $_POST['images']);
for ($i = 0; $i < count($image); $i++){
    if (substr($image[$i], 0, strlen($this->host) - 1) != $this->host){
        if ($i < count($image)-1){
            $kk = substr($image[$i], 0, strlen($image[$i]) - 1);
        } else {
            $kk = $image[$i];
        }
        if ($this->download($kk, 'images/'.$title_url.'_'.$i.'.jpg')){
            $image[$i] = $this->host.'/images/'.$title_url.'_'.$i.'.jpg';
        }else{
            echo($image[$i]);
        }
    }
}
//****************************************************
    public function download($url, $path){
        if (file_put_contents($path, file_get_contents($url))){return TRUE;}else{return FALSE;}
    }
0 голосов
/ 14 января 2012

Заключите ваш URL в кавычки; сделай строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...