美文网首页让前端飞前端开发笔记
使用 axios 上传媒体文件

使用 axios 上传媒体文件

作者: 后除 | 来源:发表于2018-10-06 18:31 被阅读20次

    一、FormData

    XHR 2 添加了一个新的接口 FormData,通过 FormData 对象里面的键值对可以模拟表单控件异步上传二进制文件。

    append() 方法会添加一个新值到 FormData 对象内,若已存在也不会覆盖,可用 getAll() 方法取到指定键的所有值。delete() 方法会从 FormData 对象中删除指定键和它所有对应的值。

    示例:

    const fd = new FormData()
    // append
    fd.append('age', '24')
    fd.append('name', 'Mazey')
    fd.append('name', 'Cherrie')
    console.log(fd.get('name')) // Mazey
    console.log(fd.getAll('name')) // ["Mazey", "Cherrie"]
    // delete
    fd.delete('name')
    console.log(fd.getAll('name')) // []
    

    也可以指定一个 BlobFile 作为数据添加到 FormData 对象中:fd.append('file', Blob Object, File Name)fd.append('portrait', formInput.files[0], 'user.png')

    二、Blob

    Blob 对象表示一个不可变、原始数据的类文件对象。通过 URL 对象可以创建一个指向类型化数组的 URL,可以当成一个普通的链接使用,比如读取图片或者视频。

    示例:

    const blob = new Blob([JSON.stringify({hello: 'Mazey!'})], {type : 'application/json'})
    const url = URL.createObjectURL(blob)
    

    三、实战:使用 axios 上传一个 WebM 文件

    备注:WebM 由 Google 提出,是一个开放、免费的媒体文件格式。

    const blob = new Blob(Webm Object, {type: 'video/webm'})
    const formData = new FormData()
    formData.append('file', blob, 'mazey-test.webm')
    axios({
        method: 'post',
        url: '/api/video/upload',
        data: formData,
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    })
        .then(
            res => {
                console.log('上传成功!')
            }
        )
        .catch(
            err => {
                console.log('上传失败!')
            }
        )
    

    相关文章

      网友评论

        本文标题:使用 axios 上传媒体文件

        本文链接:https://www.haomeiwen.com/subject/hxwhaftx.html