На основе ссылки комментария, обозначенного Fran Я мог видеть, что заголовок отсутствовал, а затем собирать данные в Symfony по тому же маршруту, который уже был определен.
Файл шаблона был таким:
//CargaFoto.vue
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<div class="container">
<div class="large-12 medium-12 small-12 cell">
<label>File
<input type="file" id="file" ref="file" v-on:change="handleFileUpload()"/>
</label>
<button v-on:click="submitFile()">Submit</button>
</div>
</div>
</div>
</div>
</template>
<script>
import axios from 'axios'
export default {
name: "CargaFoto",
data() {
return {
msg: "Cargar Imagen de Perfil",
file: ''
//selectedFile: null
};
},
methods: {
submitFile(){
/*
Initialize the form data
*/
let formData = new FormData();
/*
Add the form data we need to submit
*/
formData.append('file', this.file);
/*
Make the request to the POST /single-file URL
*/
axios.post( '/usuario/jsonimagen',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
).then(function(){
console.log('SUCCESS!!');
})
.catch(function(){
console.log('FAILURE!!');
});
},
/*
Handles a change on the file upload
*/
handleFileUpload(){
this.file = this.$refs.file.files[0];
}
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style>
#fileInput {
display: none;
}
h1,
h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
.my-8 {
margin-top: 4rem;
margin-bottom: 4rem;
}
</style>
В файле, где запрашиваются данные, контроллер:
//src/UsuarioController.php
/**
* @return JsonResponse
* @Route("/jsonimagen", name="jsonimagen", methods="POST")
*/
public function jsonimagen(Request $request):JsonResponse
{
$usuario = $this->getUser();
$data = $request->files->get('file');
$fileName = $usuario.'.'.$data->guessExtension();
// moves the file to the directory where usuarios are stored
$data->move(
$this->getParameter('usuarios_directorio'),
$fileName
);
echo $data; exit;
return $this->json($data);
}
Также настройте путь, где изображениябудет загружен в файл
//services.yaml
parameters:
locale: 'en'
usuarios_directorio: '%kernel.project_dir%/public/uploads/usuarios'
Здесь вы можете увидеть изображение, загруженное в этот снимок.