Laravel 5.0 使用存储上传文件 API 总是 returns 禁止
Laravel 5.0 Upload File using Storage API always returns Forbidden
我是 Laravel 的新手,我正在尝试使用存储 API 将图像上传到我的网站,但 laravel 总是 returns "Forbidden"在我提交表格后。
这是我的表格 (add_company.blade.php) :
{!! Form::model($company = new App\Models\Setting\Organization\Company, ['method' => 'POST', 'action' => 'Setting\Organization\CompaniesController@store', 'files'=>true]) !!}
<div class="form-group">
{!! Form::label('CompanyCode', 'Company Code : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
{!! Form::text('CompanyCode', $company->autoGenerateCode(), ['class' => 'form-control', 'readonly' => true]) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Name', 'Company Name : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
{!! Form::text('Name', null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Logo', 'Company Logo : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<span class="btn btn-default btn-file form-control">
Browse {!! Form::file('Logo', ['class' => 'form-control', 'id' => 'logo']) !!}
</span>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
{!! Form::submit('Add Company', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
这是我控制器中的存储方法 (App\Http\Controllers\Setting\Organization\CompaniesController) :
public function store(CompanyRequest $request){
if (Request::file('Logo')->isValid())
{
$file = Request::file('Logo');
$extension = $file->getClientOriginalExtension();
$newFilename = $request->CompanyCode . "_logo";
Storage::disk('local')->put($newFilename . '.' . $extension, File::get($file));
$request->Logo = $newFilename;
}
Company::create($request->all());
flash()->success('Company ' . $request->Name . ' Added.');
return redirect('company');
}
Laravel 没有给出任何错误,但每次我提交表单时总是 returns "Forbidden"。
我没有更改 config/filesystems.php 或 public/.htaccess.
中的任何内容
请帮忙,我已经在 Laravel 5 中阅读了很多关于文件上传的帖子,但没有找到任何答案。非常感谢!
编辑:
我尝试了@MikeMiller 的建议,将文件上传到 public 文件夹并授予该文件夹权限,但 laravel 仍然 returns "Forbidden"。我哪里出错了?
public function store(CompanyRequest $request){
if (Input::file('Logo')->isValid())
{
chmod("/public/", 0755);
chmod("/public/uploaded_images/", 0755);
mkdir("/public/uploaded_images/" . $request->CompanyCode, 0755);
$destinationPath = '/public/uploaded_images/' . $request->CompanyCode; // upload path
$extension = Input::file('Logo')->getClientOriginalExtension(); // getting image extension
$fileName = $request->CompanyCode . '_logo.' . $extension; // renaming image
Input::file('Logo')->move($destinationPath, $fileName); // uploading file to given path
$request->Logo = $fileName;
}
Company::create($request->all());
flash()->success('Company ' . $request->Name . ' Added.');
return redirect('company');
}
这是我的目录:
app
bootstrap
config
database
public
- bower_components
- css
- fonts
- images
- script
- uploaded_images
resources
storage
tests
vendor
这是我的 xampp\apache\logs\access.log 的最后一条记录:
::1 - - [31/Jan/2016:18:29:17 +0700] "GET /favicon.ico HTTP/1.1" 200 30894 "http://localhost/hrmsystem/public/company" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:30:25 +0700] "POST /hrmsystem/public/company HTTP/1.1" 403 9 "http://localhost/hrmsystem/public/company/create" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:30:26 +0700] "GET /favicon.ico HTTP/1.1" 200 30894 "http://localhost/hrmsystem/public/company" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:15 +0700] "GET /hrmsystem/public/company/create HTTP/1.1" 200 8544278 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:15 +0700] "GET /hrmsystem/public/company/create HTTP/1.1" 200 8544278 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:17 +0700] "GET /hrmsystem/public/company/dist/img/user2-160x160.jpg HTTP/1.1" 404 14906 "http://localhost/hrmsystem/public/company/create" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:26 +0700] "POST /hrmsystem/public/company HTTP/1.1" 403 9 "http://localhost/hrmsystem/public/company/create" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
这是 xampp\apache\logs\error.log :
[Sun Jan 31 14:16:55.341100 2016] [ssl:warn] [pid 6500:tid 404] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:55.419279 2016] [core:warn] [pid 6500:tid 404] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Sun Jan 31 14:16:55.528603 2016] [ssl:warn] [pid 6500:tid 404] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:55.591103 2016] [mpm_winnt:notice] [pid 6500:tid 404] AH00455: Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12 configured -- resuming normal operations
[Sun Jan 31 14:16:55.591103 2016] [mpm_winnt:notice] [pid 6500:tid 404] AH00456: Apache Lounge VC11 Server built: Jul 12 2015 10:56:48
[Sun Jan 31 14:16:55.591103 2016] [core:notice] [pid 6500:tid 404] AH00094: Command line: 'c:\xampp\apache\bin\httpd.exe -d C:/xampp/apache'
[Sun Jan 31 14:16:55.606729 2016] [mpm_winnt:notice] [pid 6500:tid 404] AH00418: Parent: Created child process 7348
[Sun Jan 31 14:16:56.992613 2016] [ssl:warn] [pid 7348:tid 192] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:57.226989 2016] [ssl:warn] [pid 7348:tid 192] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:57.273864 2016] [mpm_winnt:notice] [pid 7348:tid 192] AH00354: Child: Starting 150 worker threads.
这是 php_error_log 文件:
[31-Jan-2016 02:03:18 Asia/Jakarta] PHP Fatal error: Class 'App\Http\Controllers\Auth\Session' not found in C:\xampp\htdocs\hrmsystem\app\Http\Controllers\Auth\SessionsController.php on line 78
[31-Jan-2016 04:09:32 Asia/Jakarta] PHP Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\hrmsystem\storage\framework\views\c57e76e02cd2fcbe254871f7ad79d55e on line 44
[31-Jan-2016 15:33:11 Asia/Jakarta] PHP Fatal error: Class 'App\Models\Setting\Organization\Carbon' not found in C:\xampp\htdocs\hrmsystem\app\Models\Setting\Organization\Company.php on line 175
你的目标路径是错误的...
$destinationPath = 'uploaded_images/' . $request->CompanyCode; // upload path
您的路径与 index.php
有关
我是 Laravel 的新手,我正在尝试使用存储 API 将图像上传到我的网站,但 laravel 总是 returns "Forbidden"在我提交表格后。
这是我的表格 (add_company.blade.php) :
{!! Form::model($company = new App\Models\Setting\Organization\Company, ['method' => 'POST', 'action' => 'Setting\Organization\CompaniesController@store', 'files'=>true]) !!}
<div class="form-group">
{!! Form::label('CompanyCode', 'Company Code : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
{!! Form::text('CompanyCode', $company->autoGenerateCode(), ['class' => 'form-control', 'readonly' => true]) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Name', 'Company Name : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
{!! Form::text('Name', null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('Logo', 'Company Logo : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<span class="btn btn-default btn-file form-control">
Browse {!! Form::file('Logo', ['class' => 'form-control', 'id' => 'logo']) !!}
</span>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
{!! Form::submit('Add Company', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
这是我控制器中的存储方法 (App\Http\Controllers\Setting\Organization\CompaniesController) :
public function store(CompanyRequest $request){
if (Request::file('Logo')->isValid())
{
$file = Request::file('Logo');
$extension = $file->getClientOriginalExtension();
$newFilename = $request->CompanyCode . "_logo";
Storage::disk('local')->put($newFilename . '.' . $extension, File::get($file));
$request->Logo = $newFilename;
}
Company::create($request->all());
flash()->success('Company ' . $request->Name . ' Added.');
return redirect('company');
}
Laravel 没有给出任何错误,但每次我提交表单时总是 returns "Forbidden"。 我没有更改 config/filesystems.php 或 public/.htaccess.
中的任何内容请帮忙,我已经在 Laravel 5 中阅读了很多关于文件上传的帖子,但没有找到任何答案。非常感谢!
编辑:
我尝试了@MikeMiller 的建议,将文件上传到 public 文件夹并授予该文件夹权限,但 laravel 仍然 returns "Forbidden"。我哪里出错了?
public function store(CompanyRequest $request){
if (Input::file('Logo')->isValid())
{
chmod("/public/", 0755);
chmod("/public/uploaded_images/", 0755);
mkdir("/public/uploaded_images/" . $request->CompanyCode, 0755);
$destinationPath = '/public/uploaded_images/' . $request->CompanyCode; // upload path
$extension = Input::file('Logo')->getClientOriginalExtension(); // getting image extension
$fileName = $request->CompanyCode . '_logo.' . $extension; // renaming image
Input::file('Logo')->move($destinationPath, $fileName); // uploading file to given path
$request->Logo = $fileName;
}
Company::create($request->all());
flash()->success('Company ' . $request->Name . ' Added.');
return redirect('company');
}
这是我的目录:
app
bootstrap
config
database
public
- bower_components
- css
- fonts
- images
- script
- uploaded_images
resources
storage
tests
vendor
这是我的 xampp\apache\logs\access.log 的最后一条记录:
::1 - - [31/Jan/2016:18:29:17 +0700] "GET /favicon.ico HTTP/1.1" 200 30894 "http://localhost/hrmsystem/public/company" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:30:25 +0700] "POST /hrmsystem/public/company HTTP/1.1" 403 9 "http://localhost/hrmsystem/public/company/create" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:30:26 +0700] "GET /favicon.ico HTTP/1.1" 200 30894 "http://localhost/hrmsystem/public/company" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:15 +0700] "GET /hrmsystem/public/company/create HTTP/1.1" 200 8544278 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:15 +0700] "GET /hrmsystem/public/company/create HTTP/1.1" 200 8544278 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:17 +0700] "GET /hrmsystem/public/company/dist/img/user2-160x160.jpg HTTP/1.1" 404 14906 "http://localhost/hrmsystem/public/company/create" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
::1 - - [31/Jan/2016:18:33:26 +0700] "POST /hrmsystem/public/company HTTP/1.1" 403 9 "http://localhost/hrmsystem/public/company/create" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
这是 xampp\apache\logs\error.log :
[Sun Jan 31 14:16:55.341100 2016] [ssl:warn] [pid 6500:tid 404] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:55.419279 2016] [core:warn] [pid 6500:tid 404] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Sun Jan 31 14:16:55.528603 2016] [ssl:warn] [pid 6500:tid 404] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:55.591103 2016] [mpm_winnt:notice] [pid 6500:tid 404] AH00455: Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12 configured -- resuming normal operations
[Sun Jan 31 14:16:55.591103 2016] [mpm_winnt:notice] [pid 6500:tid 404] AH00456: Apache Lounge VC11 Server built: Jul 12 2015 10:56:48
[Sun Jan 31 14:16:55.591103 2016] [core:notice] [pid 6500:tid 404] AH00094: Command line: 'c:\xampp\apache\bin\httpd.exe -d C:/xampp/apache'
[Sun Jan 31 14:16:55.606729 2016] [mpm_winnt:notice] [pid 6500:tid 404] AH00418: Parent: Created child process 7348
[Sun Jan 31 14:16:56.992613 2016] [ssl:warn] [pid 7348:tid 192] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:57.226989 2016] [ssl:warn] [pid 7348:tid 192] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Jan 31 14:16:57.273864 2016] [mpm_winnt:notice] [pid 7348:tid 192] AH00354: Child: Starting 150 worker threads.
这是 php_error_log 文件:
[31-Jan-2016 02:03:18 Asia/Jakarta] PHP Fatal error: Class 'App\Http\Controllers\Auth\Session' not found in C:\xampp\htdocs\hrmsystem\app\Http\Controllers\Auth\SessionsController.php on line 78
[31-Jan-2016 04:09:32 Asia/Jakarta] PHP Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\hrmsystem\storage\framework\views\c57e76e02cd2fcbe254871f7ad79d55e on line 44
[31-Jan-2016 15:33:11 Asia/Jakarta] PHP Fatal error: Class 'App\Models\Setting\Organization\Carbon' not found in C:\xampp\htdocs\hrmsystem\app\Models\Setting\Organization\Company.php on line 175
你的目标路径是错误的...
$destinationPath = 'uploaded_images/' . $request->CompanyCode; // upload path
您的路径与 index.php
有关