2017-02-07 4 views
1

ファイルをアップロードする入力フィールドがあります。 私は彼らがアップロードできること、docのようなワードファイル、そしてcsv、xlsxのようなファイルを望んでいます。Laravelバリデーターとエクセルファイルのエラー

私は.docに全く問題はありませんが、Excelファイルで試してみると、バリデーターは失敗し、いい拡張子ではないと言います。

あなたは私のコードを見ることができますここで、コメントの2行は、私がしようとしている、そしてそれはあまりにも動作しません:(他の溶液であった。

すべてのヘルプは大歓迎です。

public function postFile(Request $request) 
{ //Règle de validation avec les type de fichiers acceptés 

if(isset($request->file)){ 
//dd($request); 
    $validator=Validator::make($request->all(),[ 
    'file'=>'required|max:50000|mimes:xlsx,doc,docx,ppt,pptx,ods,odt,odp,application/csv,application/excel, 
     application/vnd.ms-excel, application/vnd.msexcel, 
     text/csv, text/anytext, text/plain, text/x-c, 
     text/comma-separated-values, 
     inode/x-empty, 
     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 
    /* 'extension' => strtolower($request->file->getClientOriginalExtension()), 
    'extension'=>'required|in:doc,csv,xlsx,xls,docx,ppt,odt,ods,odp'*/ 
    ]); 
    if ($validator->fails()) { 
    return back() 
       ->withErrors($validator); 
    } 

答えて

2

[OK]を私のせい。 私はこのウェブサイトで他の解決策を見つけようとしました。 ヘルプOdinに感謝します。 私はこのウェブサイトで私が誰かを助けることができるかどうか私の最初の質問でした。 誰かの解決策のためにコードを投稿します:)。

$validator = Validator::make(
    [ 
     'file'  => $request->file, 
     'extension' => strtolower($request->file->getClientOriginalExtension()), 
    ], 
    [ 
     'file'   => 'required', 
     'extension'  => 'required|in:doc,csv,xlsx,xls,docx,ppt,odt,ods,odp', 
    ] 

);

1

あなたがextentions( docxファイルのxlsx、ドキュメントを、)書きたいとき、「マイム」を使用してください。場合 利用のMIMEタイプようなアプリケーション/ vnd.ms-エクセルあなたが検証ルールmimetype

を使用する必要があります。の

以上のMIMEタイプ:more mime-types

$validator=Validator::make($request->all(),[ 
//use this 
    'file'=>'required|max:50000|mimes:xlsx,doc,docx,ppt,pptx,ods,odt,odp' 
//or this 
    'file'=>'required|max:50000|mimetypes:application/csv,application/excel, 
     application/vnd.ms-excel, application/vnd.msexcel, 
     text/csv, text/anytext, text/plain, text/x-c, 
     text/comma-separated-values, 
     inode/x-empty, 
     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' 
] 
+0

回答ありがとうございますが、私はすでにこの2つのソリューションを試しています。同じこと.xlsxまたは.csvをアップロードしようとすると、バリデータが失敗します。 – Exarkun

0

まずこれは適切な解決策ではないことを伝えます。しかし、あなたはこれを試すことができます。

私はそれについても検索しましたが、excel fileの妥当性を確認するのに非常に苦労しており、そのmimesタイプはそのため残念ながら働いていません。 namspaceで

if($request->hasFile('file')) 
{ 
    $extension = File::extension($request->file->getClientOriginalName()); 
    if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") { 
     //'Your file is a valid xls or csv file' 
    }else { 
     //'File is a '.$extension.' file.!! Please upload a valid xls/csv file..!!'); 
    } 
} 

あなたは、この方法で感謝を任意のファイルを検証することができ必見use File;

が含まれます。

+0

私はあなたが最後の答え、その仕事を見ることができる解決策を見つけました:) – Exarkun

1

Laravelでは、フック後を使用して拡張子付きのファイルアップロードを検証できます。 hereから続きを読む!

$validator->after(function ($validator) use ($request){ 
    if($this->checkExcelFile($request->file('file')->getClientOriginalExtension()) == false) { 
     //return validator with error by file input name 
     $validator->errors()->add('file', 'The file must be a file of type: csv, xlsx, xls'); 
    } 
}); 

function checkExcelFile($file_ext){ 
    $valid=array(
     'csv','xls','xlsx' // add your extensions here. 
    );   
    return in_array($file_ext,$valid) ? true : false; 
} 
関連する問題