[英]laravel deployed on google app engine doesn't upload files
我正在嘗試上傳文件,我正在使用 laravel 4 並部署在谷歌應用引擎上。 本地文件上傳有效,但是當使用谷歌應用引擎部署時就不行了。 這是我的代碼:
看法:
{{ Form::model($v, array('files' => true,'route' => array('upload.image', $v->id),'method' => 'post','class'=>'form-horizontal','id'=>'upload-images')) }}
{{ Form::file('image') }}
<br>
{{ Form::submit('Add Photo', array('class' => 'btn btn-primary' )) }}
{{ Form::close() }}
控制器
$file = Input::file('image');
dd($file);
$destinationPath = 'img_gallery/';
$extension = $file->getClientOriginalExtension();
$filename = 'img_' . $id . '.' . $extension;
$file->move($destinationPath, $filename);
$car = Car::find($id);
$car->Pic = $filename;
$car->save();
return Redirect::to('/');
它顯示一個帶有文件屬性的數組。 但是當使用谷歌應用引擎部署時,此代碼返回 NULL。 在閱讀了 php 的谷歌應用引擎文檔后,我明白問題是在谷歌應用引擎中你不能寫入文件系統應用程序,在這個鏈接中我發現了沒有 laravel 的 php 代碼,並試圖與我的代碼結合,如下所示:
upload_test.blade.php
require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php';
use google\appengine\api\cloud_storage\CloudStorageTools;
$options = [ 'gs_bucket_name' => 'images_upload'];
$upload_url = CloudStorageTools::createUploadUrl('upload.handler', $options);
?>
<div class="body">
<form action="<?php echo $upload_url ?>" enctype="multipart/form-data" method="post">
<input type="file" name="uploaded_files" size="40">
<input type="submit" value="Send">
</form>
</div>
控制器
public function upload_image($id) {
$file = Input::file('image');
dd($file);
}
路線
Route::group(array('before' => 'auth'), function() {
Route::post('upload_handler', array('as' => 'upload.handler', 'uses' => 'CarController@upload_handler'));
});
控制器
public function upload_handler() {
var_dump($_FILES);
}
但這顯示:
Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException
我知道這是一個錯誤,因為表單帖子不是指向路線,而是指向變量。 圖像存儲在谷歌應用引擎中,但問題是此代碼不會發布到控制器以將文件路徑保存在數據庫中。 我嘗試了其他方法,但沒有結果。 我也跟着步驟通過在步驟部6 此。 此外,我嘗試了Ajessup 包,但沒有結果。
有了這條線:
$upload_url = CloudStorageTools::createUploadUrl('upload.handler', $options);
第一個 arg 應該是一個 URL——嘗試刪除引號(假設upload.handler
指向你想要的位置),或者嘗試用應用程序應該重定向到的實際 URL 替換該 arg。
如果它適用於您的本地開發服務器而不是您的遠程服務器,我認為這是一個權限問題。 要修復它,請嘗試以下操作:
我建議您使用默認的 GCS 存儲桶:
這種情況的更好替代方法是將文件作為一組請求可以處理的大小的夾頭上傳。
示例項目 - https://github.com/pionl/laravel-chunk-upload-example
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.