ユーザーがlaravel 4でajaxリクエスト>ルート> controller @ methodでフォルダーを作成できるようにする問題があります。
url call rightメソッドへのajax成功リクエストをテストしました。mkdir
またはFile::mkdir($path);
(このメソッドは存在しますか?)を使用すると、応答Failed to load resource: the server responded with a status of 500 (Internal Server Error)
が返され、新しいフォルダーの作成に失敗します。
route.php
Route::post('admin/article/addimagegallery', 'AdminDashboardController@addImagegallery');
AdminDashboardController
public function addImagegallery()
{
if (Request::ajax())
{
…
$galleryId = 1; // for test
$path = public_path().'/images/article/imagegallery/'.$galleryId;
File::mkdir($path);
}
}
js
$.ajax({
url: 'addimagegallery',
type: 'POST',
data: {addimagegallery: 'addimagegallery'},
})
.done(function(response) {
console.log(response);
});
いいえ、実際には
File::makeDirectory($path);
また、これを試すことができます:
$path = public_path().'/images/article/imagegallery/' . $galleryId;
File::makeDirectory($path, $mode = 0777, true, true);
更新:実際に動作し、mkdir
が舞台裏で使用されています。これがソースです。
/**
* Create a directory.
*
* @param string $path
* @param int $mode
* @param bool $recursive
* @param bool $force
* @return bool
*/
public function makeDirectory($path, $mode = 0777, $recursive = false, $force = false)
{
if ($force)
{
return @mkdir($path, $mode, $recursive);
}
else
{
return mkdir($path, $mode, $recursive);
}
}
削除の場合:
public function deleteDirectory($directory, $preserve = false);
次のパスでソースを確認します(ローカルインストール)。
root/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php
アルファに感謝します。あなたの答えは私を助けました、ここにlaravel新しいバージョンを使用する人のためにそれを行う5つの方法があります:
Storage::disk('local')->makeDirectory('path/to');
これにより、storage/app/path/to
にディレクトリが作成されます
作成したディレクトリを取得します:
storage_path('app/path/to')
使用できる引数は複数あります。
デフォルトを使用してディレクトリを作成できます。
$result = File::makeDirectory('/path/to/directory');
/ path/toディレクトリにディレクトリを作成できた場合、これはtrueを返します。作成されたディレクトリのファイルモードは0777です。
モードを指定できます。
$result = File::makeDirectory('/path/to/directory', 0775);
/ path/toディレクトリにディレクトリを作成できた場合、これはtrueを返します。作成されたディレクトリのファイルモードは0775になります。
ディレクトリを再帰的に作成することもできます。
$result = File::makeDirectory('/path/to/directory', 0775, true);