2016-01-21 88 views
1

我在Laravel包中有一个文件附件功能。我希望上传的附件使用软件包中的软件包和NOT保存在项目目录中。目前,该文件上传到包uploads目录而不是项目uploads目录。有关如何将此文件保存在正确位置的任何建议?如何使用Laravel包上传文件?

控制器:

$attachment->spot_buy_item_id = $id; 
$attachment->name = $_FILES['uploadedfile']['name']; 
$attachment->created_ts = Carbon::now(); 

$ds   = DIRECTORY_SEPARATOR; //1 

$storeFolder = '../../../resources/uploads'; 

if (!empty($_FILES)) { 

    $tempFile = $_FILES['uploadedfile']['tmp_name'];   //3 

    $extension = pathinfo($_FILES['uploadedfile']['name'], PATHINFO_EXTENSION); 

    $attachment_hash = md5($tempFile); 

    $new = $attachment_hash.'.'.$extension; 

    // complete creating attachment object with newly created attachment_hash 
    $attachment->hash = $new; 
    $attachment->save(); 

    $targetPath = dirname(__FILE__) . $ds. $storeFolder . $ds; //4 

    $targetFile = $targetPath. $new; //5 

    move_uploaded_file($tempFile,$targetFile); //6 

    chmod($targetFile, 0777); 

} 
else 
{ 
    return "error"; 
} 

服务提供商(我想发布上传文件夹可能工作 - 没了。)

public function boot() 
{ 
    require __DIR__ . '/Http/routes.php'; 

    $this->loadViewsFrom(__DIR__ . '/resources/views', 'ariel'); 

    $this->publishes([ 
     __DIR__ . '/resources/uploads' => public_path('vendor/uploads'), 
    ], 'public'); 

    $this->publishes([ 
     __DIR__ . '/../database/migrations' => database_path('migrations')], 'migrations'); 
} 

回答

0

HERE WE GO。我使用了(充分记录的)存储外观来处理本地文件系统(项目)。

https://laravel.com/docs/5.1/filesystem

$attachment->spot_buy_item_id = $id; 
$attachment->name = $_FILES['uploadedfile']['name']; 
$attachment->created_ts = Carbon::now(); 

$ds   = DIRECTORY_SEPARATOR; //1 

$storeFolder = 'uploads'; 

if (!empty($_FILES)) { 

    $tempFile = $_FILES['uploadedfile']['tmp_name'];   //3 

    $extension = pathinfo($_FILES['uploadedfile']['name'], PATHINFO_EXTENSION); 

    $attachment_hash = md5($tempFile); 

    $new = $attachment_hash.'.'.$extension; 

    // complete creating attachment object with newly created attachment_hash 
    $attachment->hash = $new; 
    $attachment->save(); 

    $tmpPath = $storeFolder . $ds; 

    $targetFile = $tmpPath . $new; //5 

    Storage::disk('local')->put($targetFile, file_get_contents($request->file('uploadedfile'))); 

} 
else 
{ 
    return "error"; 
}