コード例 #1
0
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     $file = $request->file('file');
     $folder = Folder::findOrFail($request->current_folder);
     $file_original_name = str_slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME));
     $extension = $file->getClientOriginalExtension();
     $file_path = 'documents/' . $request->user()->slug . '/' . current_folder_path($folder);
     $file_name_on_disk = $file_original_name . str_random(20) . '.' . $extension;
     $file_name = $file_original_name . '.' . $extension;
     $file_slug = '@' . $file_name;
     $complete_path = $file_path . $file_name_on_disk;
     if (\File::exists($complete_path)) {
         abort(403, "A file with this name already exists within this folder.");
     }
     $file->move($file_path, $file_name_on_disk);
     try {
         $request->user()->files()->create(['folder_id' => $folder->id, 'path' => $complete_path, 'name' => $file_name, 'name_on_disk' => $file_name_on_disk, 'slug' => $file_slug]);
     } catch (\Exception $e) {
         return response()->json(['message' => 'File was not created', 'description' => $e->getMessage()], 403);
     }
     return response()->json(['message' => 'File created correctly', 'description' => 'A file was uploaded and stored correctly at ' . $complete_path], 201);
 }
コード例 #2
0
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(Request $request, $slug, $id)
 {
     $user = User::find($id);
     $this->authorize('show-user', $user);
     if ($request->password && $request->password_confirmation) {
         $this->validate($request, ['password' => 'required|confirmed']);
         $credentials = $request->only('name', 'email', 'password', 'password_confirmation');
         $user->password = bcrypt($credentials['password']);
     }
     $old_path = 'documents/' . $user->slug;
     $user->name = $request->name;
     $user->slug = '@' . str_slug($request->name);
     // $user->email = $request->email;
     $user->save();
     $folders = $user->folders()->get();
     $folders->each(function ($folder, $key) use($user) {
         if ($folder->parent_folder_id > 0) {
             $new_path = 'documents/' . $user->slug . '/' . current_folder_path(Folder::find($folder->parent_folder_id)) . $folder->slug;
             $folder->files()->get()->each(function ($file, $key) use($new_path) {
                 $file->path = $new_path . '/' . $file->name_on_disk;
                 $file->save();
             });
         }
     });
     \File::move(public_path($old_path), public_path('documents/' . $user->slug));
     return redirect('/dashboard/users/' . $user->slug . '/' . $user->id);
 }
コード例 #3
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     $folder = Folder::find($id);
     try {
         \File::deleteDirectory(public_path('documents/' . $folder->user()->first()->slug . '/' . current_folder_path($folder)));
         $folder->delete();
     } catch (\Exception $e) {
         return response()->json(['message' => 'Folder was not deleted', 'description' => $e->getMessage()], 403);
     }
     return response()->json(['message' => 'Folder deleted correctly', 'description' => 'Folder deleted correctly'], 201);
 }