возможно, вы уже получили ответ на этот вопрос. Но вот что я сделал. У меня была такая же проблема с q-uploader, отправил один файл на laravel, и все в порядке. Но я застрял при отправке нескольких файлов. Я должен был проконсультироваться с информацией из разных источников, чтобы организовать процесс дырки Итак, что я сделал, это:
На моем интерфейсе:
<q-uploader
:factory="uploadFiles"
:loading="uploadPercent"
:url="getUrl()"
@finish="finished"
label="Cargar Archivos (max 2MB)"
ref="uploader"
multiple
bordered
batch
accept=".png, .jpeg, .jpg, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .csv, .pdf, pdf/*, image/*"
:max-file-size="2048000"
/>
На моем методе:
uploadFiles(file){
this.uploadPercentage = true
let files = file
console.log(files)
let files_count = files.length + this.files.length
if(files_count > 10){
this.Notify(`El límite de archivos por tarea es de 10`,'negative')
this.finished()
return
}
const data = new FormData()
for(var i = 0; i < files.length; i++){
let file = files[i]
data.append(`files[${i}]`, file)
}
data.append('teacher', this.teacher)
data.append('homework', this.homework)
return new Promise((resolve, reject) => {
this.$axios.post(`${process.env.API}/homework/upload-files`, data,
{
headers: { 'content-type': 'multipart/form-data' },
processData: false, contentType: false
})
.then(res => {
resolve(null)
this.uploadPercentage = false
this.files = res.data
this.Notify('Se subieron los archivos con éxito','positive')
})
.catch(err => {
reject(err)
this.errors = err.response.data.errors
this.uploadPercentage = false
this.Notify('No se pudieron cargar los archivos, o el formato de alguno de los archivos no es correcto, o alguno de los archivos pesa más de 2MB','negative')
})
})
},
И на моей бэкэнд-функции, я храню только файл (Я храню его в папке publi c вместо хранилища, поскольку у меня есть общий хостинг в этом проекте), кроме того, вы можете добавить код для сохранения местоположения файла в вашей базе данных:
public function upload_files(Request $request)
{
$homework = DB::table('homeworks as h')
->join('teachers as t','t.id','=','h.teacher_id')
->join('users as u','u.id','=','t.teacher_id')
->select('h.id')
->where('h.code','=',$request->homework)
->where('u.code','=',$request->teacher)
->first();
if(!$homework){
return response()->json(['success'=>false,'msg'=>'Not avalid homework'],422);
}
try{
DB::beginTransaction();
$files = $request->file('files');
if(!empty($files)){
for($i = 0; $i < count($files); $i++){
$file = $files[$i];
$filename = $request->homework.'_'.uniqid('doc_').'.'.$file->getClientOriginalExtension();
$path = public_path('/uploads');
$file->move($path, $filename);
}
}
DB::commit();
return response()->json(['success' => true], 200);
}
catch (\Exception $e)
{
DB::rollback();
throw $e;
}
}