如何从外部URL Laravel公共目录中保存文件

时间:2017-09-25 09:29:43

标签: php laravel file

我想保存外部网址中的文件,该文件可能包含任何类型的文件,例如“jpg,png,mp4等”

我想将它保存在Laravel App的公共目录中。我怎么能这样做?任何帮助将受到高度赞赏。

我尝试了以下内容,但它将文件保存在我的存储文件夹中:

Storage::put($name, $contents);

由于

3 个答案:

答案 0 :(得分:8)

在公共路径中创建一个img文件夹,并且:

 $image = file_get_contents("https://logos-download.com/wp-content/uploads/2016/09/Laravel_logo.png");


file_put_contents(public_path('img/a.png'), $image);

答案 1 :(得分:2)

使用如下文件

   use Illuminate\Support\Facades\File;

然后

File::put(public_path(   'ANY FILE YOU WANT'    ));

示例:

 File::put( public_path( 'js/a.js'), ' CONTENT ');

答案 2 :(得分:0)

认证后从外部URL下载文件。

 public function file_get_contents_curl( $url ) { 

    $ch = curl_init();   
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url);  
    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 
public function downloadFile( $imgName, $url, $path )
{
    $data = $this->file_get_contents_curl( $url );
    file_put_contents( $path.$imgName, $data ); 
    echo "File downloaded!";

}

用于基于日期创建新文件夹的代码。

   public function imgBackupFolder( $currentShop ) {

    $folderName = 'export'.DS.str_replace( '.', '_', $currentShop->shopify_domain ).DS.'images'.DS.date( 'Y_m_d' ).DS;
    return $this->createFolder( $folderName );

}
  /*
 * Create folder based on the store,date,export type
 */
private function createFolder( $folderName ) {

    try {
        $path = public_path( $folderName );

        if( !File::isDirectory( $path ) ){
            File::makeDirectory( $path, 0777, true, true );
        }
        return $path;

    } catch (Exception $ex) {
        Log::error( $ex->getMessage() );
    }

}