// Vuejs 2
// Laravel 7.x
// Axios
// SqlServer
Меня попросили сохранить файлы в db (я не понимаю почему), поэтому я отправляю данные из vue. js с помощью ax ios, которые я получаю в своем контроллере, и я сохранить его в моей базе данных.
После этого я хотел бы, зачем делать загружаемую ссылку на файл напрямую, но поскольку он находится в базе данных, я не знаю, как это сделать.
с мой код помещает мне поврежденный файл, но я получаю правильное имя файла!
PUT IN DB
//Vue.js
<input type="file" class="form-control-file" id="file_1_detail" @change="fileUpload($event, 1)">
//my data vue.js
project: {
title: null,
description: null,
detail: {
description: null,
files: {
1: null,
2: null,
3: null,
4: null,
5: null
}
}
},
// methods
fileUpload(event, value){
this.project.detail.files[value] = event.target.files[0];
},
submit(){
let formData = new FormData();
formData.append("detail_file_1", this.project.detail.files[1], this.project.detail.files[1].name);
let settings = { headers: { 'content-type': 'multipart/form-data' } }
axios.post('/project/new',
formData,
settings
).then(data => {
console.log(data.data);
});
},
Controller
Project::create([
'attach1' => utf8_encode(file_get_contents($request->detail_file_1)) ,
'attach1name' => $request->file('detail_file_1')->getClientOriginalName() ,
]);
Теперь на мой взгляд, чтобы получить и загрузить этот файл
Контроллер
$project = Project::with('project_details')->findOrFail($id);
return $project;
Просмотр
//donwload link
<a href="#" @click="downloadBlob(detail.attach1, detail.attach1name)">
{{ detail.attach1name }}
</a>
// methodes
getProject(){
axios.get('/project/'+this.projectId)
.then(data => {
console.log(data.data.project_details[0].attach1);//file
this.details = data.data.project_details;
});
},
downloadBlob(file, fileName) {
let data = Base64.atob(file);
let data = file;
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var json = JSON.stringify(data),
blob = new Blob([json], {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
}
, и когда я щелкаю файл, он загружается с правильным именем файла и правильное расширение, но когда я хочу его открыть, он говорит, что файл поврежден! или неверный формат, спасибо за помощь!
EDIT
Blob content: "%PDF-1.3\n1 0 obj\n<< /Type /Catalog\n/Outlines 2 0 R\n/Pages 3 0 R >>\nendobj\n2 0 obj\n<< /Type /Outlin......