Как загрузить файл pdf / do c в laravel через проверку - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь создать веб-сайт, на котором пользователь сможет загрузить PDF и сделать файл c. Кроме того, я хочу сохранить файл в папке хранилища, поэтому я создал символическую ссылку, чтобы она дублировала папку в папке Publi c. У меня есть папка Public / storage / Paper в publi c. Это моя форма, где пользователь сможет загрузить статью.

<form class="form-horizontal" method="post" action="paper" enctype="multipart/form-data">
    @csrf
    <div class="form-group">
        <label for="title">Title of Paper</label>
        <input type="text" class="form-control" name="title"  placeholder="Title of Paper" required="required">
    </div>
    <div class="form-group">
        <label for="Paper">Upload Paper</label>
        <input type="file" class="form-control" name="paper" required="required" >
    </div>

    <button type="submit" class="btn btn-primary">Submit</button>
</form>

На моем контроллере я написал этот код, он прекрасно работает, как сохранение данных в базе данных, когда мне не нужно загружать файл. Но когда мне нужно загрузить документ, проверка не проходит.

 <?php

 namespace App\Http\Controllers;
 use App\Submission;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\File;
 use Illuminate\Support\Facades\Storage;
 class PapersController extends Controller
{


public function  store(Request $request){

    $request->validate([
        'title'=>'required',
        'paper'=>'required'

    ]);


    $title= $request->input('title');
    Validator::make($request->all(),['file'=>"required|string|paper|mimes:pdf,docx"])->validate();
    $extension= $request->file("file")->getClientOriginalExtension();
    $stringPaperFormat=str_replace(" ", "", $request->input('title'));

    $fileName= $stringPaperFormat.".".$extension;
   $FileEnconded=  File::get($request->paper);
    Storage::disk('local')->put('public/Paper'.$fileName, $FileEnconded);
    $newsubmission= array("title"=>$title, "first_name"=>$first_name, "last_name"=>$last_name,"isReviewed"=>$isReviewed, "paper"=>$fileName);
    $created= DB::table('submissions')->insert($newsubmission);
    if($created){
        return "Sucessful";
    }else{
        return "Not Sucessful";
    }


}

}

Я не могу обнаружить проблему. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 02 марта 2020

На самом деле doc и docs являются zip файлами, поэтому вам нужно добавить zip вместо doc или docx в ваше правило проверки

Также ваше имя поля paper и вы используете file при создании проверки. Измените file на paper. И вы используете правило paper в проверках загрузки файлов, которое не является встроенным правилом проверки, поэтому удалите его тоже.

Изменение

 Validator::make($request->all(),['file'=>"required|string|paper|mimes:pdf,docx"])->validate();

до

 Validator::make($request->all(),['paper'=>"required|string|mimes:pdf,zip"])->validate();

Ссылки: Laracast -> Как создать правила проверки для загрузки файлов pdf, do c и docx в laravel 5,4

https://en.wikipedia.org/wiki/Office_Open_XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...