当前位置: 首页 > 面试题库 >

如何在AJAX中将RecordRTC blob文件上传到Rails回形针

商风华
2023-03-14
问题内容

在客户端,用户使用RecordRTC录制短视频。当用户按下上载时,我将使用来获取视频的blob数据recorder.getBlob(),并将其上载到我的服务器(使用Rails和回形针处理文件上载)。

首先,我想将<input type='file'>字段值更改为blob数据。事实证明,为了确保浏览器的安全性,我无法使用javascript对其进行更改。

然后,我尝试使用AJAX:

$("#ajax-submit").on("click", function() {
    var data = new FormData();

    data.append("record[video]", recorder.getBlob(), (new Date()).getTime() + ".webm");

    var oReq = new XMLHttpRequest();
    oReq.open("POST", "/records/");
    oReq.send(data);
    oReq.onload = function(oEvent) {
        if (oReq.status == 200) {
            console.log("Uploaded");
        } else {
            console.log("Error " + oReq.status + " occurred uploading your file.");
        }
    };
});

但是,它不起作用。log档案上,我将得到以下内容,无法处理:

Processing by RecordsController#create as */*
Parameters: {
  "video"=>"data:video/webm;base64,GkXfo0AgQoaBAUL3gQFC8o..."
}

如果我正常使用提交form,则参数将如下所示:

Processing by RecordsController#create as HTML
Parameters: {
    "video"=>#<ActionDispatch::Http::UploadedFile:0x3b476e0 @original_filename="testing.mp4", @content_type="video/mp4", @headers="Content-Disposition: form-data; name=\"record[video]\"; filename=\"testing.mp4\"\r\nContent-Type: video/mp4\r\n", @tempfile=#<File:a_path>>
}

我该如何解决这个问题?

非常感谢。


问题答案:

最后,问题的原因是blob从传回的档案recorder.getBlob()不是实际的blob。请参阅muaz-
khan
的答案。

我在RecordRTC中添加了以下几行,以获取真实内容blob执行相同的AJAX提交。现在一切正常。

         getBlob: function () {
             return blobURL2;
         },
+        getRealBlob: function() {
+            return blobURL;
+        },


 类似资料:
  • 问题内容: 我试图一次将许多文件上传到我的CherryPy服务器。 我正在按照本教程在服务器端显示PHP代码。 JavaScript部分很简单。这是它的摘要: 我将本教程中描述的内容翻译成如下形式: 当服务器收到请求时,我可以看到 这就是我要上传的文件的长度,因此我假设整个文件已发送到服务器。 如何获取文件的内容? 问题答案: 至少看起来像下面这样。在Firefox和Chromium中进行了测试。

  • 我看的是: > 与谷歌云平台集成 当前代码:

  • 问题内容: 我正在尝试上传以表格形式发送的文件。我正在尝试使用php,但是在html和php之间我使用JS和Jquery和ajax(因为我不想重新加载页面)。我在$ _FILES方面遇到麻烦。 在这里,我正在使用带有javascript操作(action =“ javascript:SendPresupMail();”)的表单(包含文件输入)。 在该JS函数中,我使用了一个小Jquery和ajax

  • 问题内容: 我知道,关于这个主题的话题并非没有,但请耐心等待。我想使用Ajax或等效文件将文件上传到服务器。 我猜我配置ajax函数的方式存在问题,因为在调试模式下,除之外的所有数据均会返回。 我做错了什么吗? 问题答案: 回顾过去,较旧的答案不切实际,不建议使用。暂停整个Javascript以仅上传文件, 您可能会在上传过程中触发其他功能 。 如果您仅将JQuery用于,则我建议使用: Axio

  • 问题内容: 嗨,我对Flask很陌生,我想使用ajax调用将文件上传到服务器。如文档中所述,我将文件上传添加为以下格式: 我这样写了ajax处理程序 我不知道如何从中获取上传的文件(不是名称) 并将文件保存在文件夹中。我不太确定如何从我编写的处理程序中读取文件: 如果有人可以帮助,我将不胜感激。先感谢您 问题答案: 要回答您的问题… HTML: JavaScript: 现在,在flask的终结点视

  • 当我试图从客户端上传时,我一直得到403。这是因为桶上没有条件吗?如果我只是指定密钥-没有访问密钥,签名或策略-它将上传罚款。 桶策略: CORS(因当地开发而开放) 签名生成 客户: