php - 无法使用 ajax 在 laravel 中验证加密的 word 文档(docx)
问题描述
当我在 laravel 和 ajax 中上传加密的 word 文档 (docx) 时出现问题。但是,当我将此文档另存为 word 文档 97-2003 (doc) 时,不会出现任何问题。这是我的代码
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
我已阅读此问题Using Mimes for Validating Laravel File Post - Word File但他们使用普通帖子
我使用 Laravel 5.8.36
解决方案
推荐阅读
- c - 如何使用 C 编程在 Visual Studio Code 中读取输入文件?
- node.js - 在 Mac 上运行 ruby / gem 存储库
- elasticsearch - Elasticsearch 模糊查询和模糊匹配
- npm - 当我安装 web3@1.0.0-beta.26 时,出现此错误“node.lib:致命错误 LNK1106:”
- c - 设置 size_t 的最后 3 位
- database - 如何要求 Google 更新同一站点 URL 上的搜索内容
- javascript - React Redux 状态正在更新,但组件道具未更新
- lex - 如何在 Manjaro Linux 中安装 lex 工具?
- javascript - 找不到类中元素的索引
- hadoop - Mapreduce 作业卡住了