如何将音频文件从Vue.js上载到Laravel?

如何将音频文件从Vue.js上载到Laravel?,laravel,vue.js,Laravel,Vue.js,我试着上传一个像图片一样的音频文件,但没有成功。如何从音频文件中提取数据并将其发送给Laravel <input type="file" class="user-edit-form browse-file" accept=".mp3,audio/*" @change="uploadSong" > uploadSong (e) { console.log(e) this.songUpload = e.target.files[0] if (!thi

我试着上传一个像图片一样的音频文件,但没有成功。如何从音频文件中提取数据并将其发送给Laravel

<input
type="file"
class="user-edit-form browse-file"
accept=".mp3,audio/*"
@change="uploadSong"
>

uploadSong (e) {
      console.log(e)
      this.songUpload = e.target.files[0]
      if (!this.songUpload.length) {
        return
      }
      this.createSong(this.songUpload[0])
    },
createSong (file) {
      let reader = new FileReader()
      let vm = this
      reader.onload = (e) => {
        vm.song = e.target.result
        console.log(e.target.result)
      }
      reader.readAsDataURL(file)
    }

上传歌曲(e){
控制台日志(e)
this.songUpload=e.target.files[0]
如果(!this.songUpload.length){
返回
}
this.createSong(this.songUpload[0])
},
createSong(文件){
let reader=new FileReader()
让vm=这个
reader.onload=(e)=>{
vm.song=e.target.result
console.log(e.target.result)
}
reader.readAsDataURL(文件)
}

您可以尝试以下代码:

输入:

<input type="file" id="file" ref="file" v-on:change="handleFileUpload()"/>
最后,提交表格:

    submitAudioFile(){

            let formData = new FormData();

            // add file

            formData.append('file', this.file);

            axios.post( '/upload',
                formData,
                {
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'multipart/form-data'
                }
              }
            )
        .then(function(){
           console.log('success');
        })
        .catch(function(){
           console.log('failed');
        });

您可以尝试以下代码:

输入:

<input type="file" id="file" ref="file" v-on:change="handleFileUpload()"/>
最后,提交表格:

    submitAudioFile(){

            let formData = new FormData();

            // add file

            formData.append('file', this.file);

            axios.post( '/upload',
                formData,
                {
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'multipart/form-data'
                }
              }
            )
        .then(function(){
           console.log('success');
        })
        .catch(function(){
           console.log('failed');
        });
输入:

<input type="file" id="file" ref="file" v-on:change="handleFileUpload()"/>
输入:

<input type="file" id="file" ref="file" v-on:change="handleFileUpload()"/>

您是否将ajax请求的contentType设置为
多部分/表单数据
?是的,我设置了,但仍然不起作用。请参阅我的答案。您试过了吗?您是否将ajax请求的contentType设置为
多部分/表单数据
?是的,我这样做了,但仍然不起作用。请参阅我的答案。您试过了吗?我将标题设置为headers:{'Accept':'Application/json'}。我也试过你建议的那个。它仍然不起作用。不知道是什么问题!!!我尝试了这个const formData=new formData()formData.append('song',this.songUpload)this.$http.post('/upload',formData,{headers:{'Accept':'application/json'}})。然后(res=>{console.log(res)})您可以设置多个标题。尝试添加内容类型标题。它很有效,就像您的代码一样…非常感谢@ManzurulI将头设置为头:{'Accept':'Application/json'}。我也试过你建议的那个。它仍然不起作用。不知道是什么问题!!!我尝试了这个const formData=new formData()formData.append('song',this.songUpload)this.$http.post('/upload',formData,{headers:{'Accept':'application/json'}})。然后(res=>{console.log(res)})您可以设置多个标题。尝试添加内容类型标题。它很有效,就像您的代码一样…非常感谢@ManzurulIt说{“所有者”:“eslint”,“code”:“no undef”,“severity”:8,“message”:“未定义“$”,“source”:“eslint”,“startinenumber”:418,“startColumn”:25,“endLineNumber”:418,“endColumn”:26}它说{“所有者”:“eslint”,“code”:“no undef”,“severity”:8,“message”:“未定义“$”,“source”:“eslint”,“StartInNumber”:418,“startColumn”:25,“endLineNumber”:418,“endColumn”:26}