亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 midi 文件創建 url - Javascript

從 midi 文件創建 url - Javascript

楊魅力 2023-08-22 14:40:17
我通過 ajax 請求從服務器發送一個 midi 文件:// Create new request add token const generateRequest = new XMLHttpRequest();generateRequest.open('POST', '/generate');generateRequest.setRequestHeader('X-CSRFToken', csrftoken);generateRequest.onload = () => {    // Get response from server    console.log(generateRequest.response);    // /tmp/music21/tmp5v_ulgkr.mid    let objectURL = URL.createObjectURL(generateRequest.response);    document.getElementById('myVisualizer').src = objectURL;};// Add the motif to send with the requestconst data = new FormData();data.append('motif', JSON.stringify(notes));// Send requestgenerateRequest.send(data);服務器:def generate(request):    if request.method == "POST":        # Do some stuff                midi = mg.save_melody(melody)    return HttpResponse(midi, content_type="audio/midi", status=200)Mi的想法是將mi midi-visualizer的src設置為midi文件:<midi-visualizer src="" type="staff" id="myVisualizer"></midi-visualizer><midi-player sound-font visualizer="#myVisualizer"></midi-player>但我得到:未捕獲類型錯誤:無法在“URL”上執行“createObjectURL”:未找到與提供的簽名匹配的函數。我也嘗試了 srcObject 但沒有結果。如何將 src 更改為我的 midi 文件?
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

我是這樣解決的:


# Generate the melody based on the seed


@require_http_methods(["POST"])

def generate(request):

    

    # See if method was post

    if request.method == "POST":


        # Do some stuff


        midi = mg.save_melody(melody)


        try:

            with open(midi, 'rb') as f:

                file_data = f.read()


            response = HttpResponse(file_data, content_type="audio/midi", status=200)


        except IOError:

            response = JsonResponse({"succes": False}, status=400)


        return response

和 JavaScript:


const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;


// Create new request add token 

const generateRequest = new XMLHttpRequest();

generateRequest.open('POST', '/generate');

generateRequest.setRequestHeader('X-CSRFToken', csrftoken);

generateRequest.responseType = 'blob';


generateRequest.onload = () => {

    // Get response from server

    console.log(generateRequest.response);


    let objectURL = URL.createObjectURL(generateRequest.response);

    document.getElementById('myVisualizer').src = objectURL;

    document.getElementById('playerMidi').src = objectURL;

};


查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關注
  • 1651 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號