首页 > 解决方案 > 如何将 Blob 对象转换为文件并将其发送到服务器

问题描述

我想将 javascript 中的 blob mp3 音频对象转换为文件并发送到服务器。

所以这是我的代码:

function createDownloadLink(blob,encoding) {

    var url = URL.createObjectURL(blob);
    var au = document.createElement('audio');
    var li = document.createElement('li');
    var link = document.createElement('a');

    // Put in the server

    var token = $("#token").val();

    var formData = new FormData();
    

    formData.append("_token", token);
    formData.append('audio', blob);
    
    $.ajax('https://myip/audio', {
        method: "POST",
        data: formData,
        processData: false,
        contentType: false,
        success: function (data) {
            console.log(data);
        },
        error: function (data) {
            console.log(data);
        }
    });
}

服务器的响应如下:

{"_token":"3Qtbk53PLvzTzDBZrYwZY9WrHC7I6jmy9G6Aj6zw","audio":{}}

当我将 console.log 设置为 blob 对象时,出现此

Blob {size: 32914, type: "audio/mpeg"}
size: 32914
type: "audio/mpeg"
__proto__: Blob
arrayBuffer: ƒ arrayBuffer()
size: (...)
slice: ƒ slice()
stream: ƒ stream()
text: ƒ text()
type: (...)
constructor: ƒ Blob()
Symbol(Symbol.toStringTag): "Blob"
get size: ƒ size()
get type: ƒ type()
__proto__: Object

有什么想法可以解决这个问题吗?

标签: javascriptajaxblobform-data

解决方案


以下片段将 a 转换blobfile并将其附加到 formdata

const blobFile = new File([blob], 'your_file_name');
formData.append("audio", blobFile);

但是blob也应该可以正常工作,因为文件也是一个 blob。


推荐阅读