4

画像をアップロードしたいときはOK。私は通常、次のようなことをします:

$file = Input::file('image');
$destinationPath = 'whereEver';
$filename = $file->getClientOriginalName();
$uploadSuccess = Input::file('image')->move($destinationPath, $filename);

if( $uploadSuccess ) {
    // save the url
}

これは、ユーザーが画像をアップロードするときに正常に機能します。しかし、URLから画像を保存するにはどうすればよいですか???

次のようなことを試してみると:

$url = 'http://www.whereEver.com/some/image';
$file = file_get_contents($url);

その後:

$filename = $file->getClientOriginalName();
$uploadSuccess = Input::file('image')->move($destinationPath, $filename);

次のエラーが表示されます。

Call to a member function move() on a non-object

では、laravel 4でURLから画像をアップロードするにはどうすればよいですか??

エイミーの助けに感謝します。

4

3 に答える 3

11

これが大いに役立つかどうかはわかりませんが、Intervention Libraryを参照してください。元々は画像操作ライブラリとして使用することを目的としていましたが、次の URL から画像を保存できます。

$image = Image::make('http://someurl.com/image.jpg')->save('/path/saveAsImageName.jpg');
于 2015-01-12T22:55:18.120 に答える
2
        $url = "http://example.com/123.jpg";
        $url_arr = explode ('/', $url);
        $ct = count($url_arr);
        $name = $url_arr[$ct-1];
        $name_div = explode('.', $name);
        $ct_dot = count($name_div);
        $img_type = $name_div[$ct_dot -1];

        $destinationPath = public_path().'/img/'.$name;
        file_put_contents($destinationPath, file_get_contents($url));

これにより、画像が /public/img に保存されます。ファイル名は元のファイル名で、上記の場合は 123.jpg です。

ここから参照される get イメージ名

于 2014-02-10T04:21:22.440 に答える
1

Laravel の Input::file メソッドは、POST リクエストでファイルをアップロードする場合にのみ使用されると思います。あなたが得るエラーは、file_get_contentsがlaravelのクラスを返さないためです。URL から取得したファイルは tmp フォルダーにアップロードされないため、move() メソッドを使用する必要はありません。

代わりに、PHP を使用して、ここで説明されているURL を介して画像ファイルをアップロードする必要があると思います。

お気に入り:

// Your file
$file = 'http://....';

// Open the file to get existing content
$data = file_get_contents($file);

// New file
$new = '/var/www/uploads/';

// Write the contents back to a new file
file_put_contents($new, $data);

今は確認できませんが、悪い解決策ではないようです。URLからデータを取得して、好きな場所に保存するだけです

于 2013-07-21T21:43:03.837 に答える