AttachController.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sdf_sky
  5. * Date: 2017/2/4
  6. * Time: 下午3:12
  7. */
  8. namespace App\Http\Controllers;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\File;
  11. use Illuminate\Support\Facades\Storage;
  12. use Illuminate\Support\Facades\Validator;
  13. class AttachController extends Controller
  14. {
  15. public function upload(Request $request){
  16. $validator = Validator::make($request->all(),[
  17. 'file' => 'required|max:'.config('tipask.upload.attach_size'),
  18. ]);
  19. if($validator->fails()){
  20. return $this->ajaxError(10000,$validator->errors()->first('file'));
  21. }
  22. $file = $request->file('file');
  23. $extension = $file->getClientOriginalExtension();
  24. $filePath = 'attachments/'.gmdate("Y")."/".gmdate("m")."/".uniqid(str_random(8)).'.'.$extension;
  25. Storage::disk('local')->put($filePath,File::get($file));
  26. return $this->ajaxSuccess([
  27. 'url'=>route("website.attach.download",['name'=>str_replace("/","-",$filePath)]),
  28. 'name'=>$file->getClientOriginalName()
  29. ]);
  30. }
  31. public function download($name){
  32. $attachFile = storage_path('app/'.str_replace("-","/",$name));
  33. if(!is_file($attachFile)){
  34. abort(404);
  35. }
  36. return response()->download($attachFile);
  37. }
  38. }