У меня проблема при загрузке зашифрованного текстового документа (docx) в laravel и ajax. Но когда я сохраняю этот документ как текстовый документ 97-2003 (do c), никаких проблем не возникает. Вот мой код
list_draft.blade. php
<div class="form-group">
<div class="col-md-8" for="file_draft">
<input type="file" class="form-control" name="file_draft" id="file_draft">
<span class="help-block" for="file_draft"></span>
</div>
<div class="col-md-4" for="draft_status">
<select class="form-control" name="draft_status" id="draft_status">
<option value="">--Pls Select--</option>
@foreach($drafts_status as $draft_status)
<option value="{{$draft_status->draft_status_id}}">{{$draft_status->draft_status_name}}</option>
@endforeach
</select>
<span class="help-block" for="draft_status"></span>
</div>
</div>
<div class="form-group">
<div class="col-md-8" for="doc_note">
<textarea name="doc_note" id="doc_note" class="form-control" rows="3" placeholder="Notes"></textarea>
<span class="help-block" for="doc_note"></span>
</div>
<div class="col-md-4">
<button type="button" id="submit-draft" class="btn btn-danger">Upload Draft</button>
</div>
</div>
<script>
$("#submit-draft").on('click', function (e) {
e.preventDefault();
var data = new FormData();
data.append('_token', '{{csrf_token()}}');
data.append('doc_note', $('#doc_note').val());
data.append('draft_status', $('#draft_status').val());
var file = ($('#file_draft')[0].files[0]);
data.append('file_draft', file);
$.ajax({
url: "{{route('lo.upload_draft')}}",
type: "post",
data: data,
contentType: false,
cache: false,
processData: false,
success: function (data) {
//When success.....
},
error: function (data) {
//When Error.....
}
});
});
</script>
LoController. php
public function upload_draft(Request $request) {
//assign variable
$file = $request->file('file_draft');
$lo_draft_status = $request->get('draft_status');
$lo_draft_notes = $request->get('doc_note');
$rule = array(
"draft_status" => "required",
"doc_note" => "required",
"file_draft" => 'mimes:doc,docx|required'
);
$message = array(
"draft_status.required" => "Field is required",
"doc_note.required" => "Field is required",
"file_draft.required" => "Field is required",
"file_draft.mimes" => "File must be of the following type : doc, docx"
);
$request->validate($rule, $message);
//Some code.....
}
когда я добавлю dd($file->getMimeType());
перед $request->validate($rule, $message);
, он вернется application/encrypted
Я прочитал этот вопрос Использование Mimes для проверки Laravel File Post - Word File но они используют нормальный пост
использую Laravel 5.8.36