我正在使用 recorder.js 并且已经成功地达到了可以录制音频片段并一遍又一遍地播放到我内心深处的地步。但是现在我正在尝试将这个“blob”(我知道它包含正确的数据,因为它正在正确播放)作为我的 /public 文件夹中的音频 wav 文件发布。我的问题是我不确定如何处理 blob 并实际发布其内容。这是我的代码:
function sendWaveToPost1() {
console.log(savedWAVBlob);
$.ajax({ url: '/worm/save',
type: 'POST',
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
data: 'someData=' + savedWAVBlob,
success: function(response) {
console.log("success");
}
});
Run Code Online (Sandbox Code Playgroud)
}
控制器:
class WormController < ApplicationController
def create
end
def
save
audio = params[:someData]
p audio
save_path = Rails.root.join("public/audioFiles")
# Open and write the file to file system.
File.open(save_path, 'wb') do |f|
f.write audio.read
end
render :text=> 'hi'
end
end
Run Code Online (Sandbox Code Playgroud)
该代码基于这篇文章:在 rails 中保存音频文件。但是虽然我发布了一些东西,但它似乎是一个字符串,而不是音频文件的实际字节。这是我收到的 rails 控制台错误:
NoMethodError …Run Code Online (Sandbox Code Playgroud) 我想将在画布中捕获的照片从 javascript 中的浏览器上传到 nodejs 服务器。我没有得到正确的方法。请帮忙。非常感谢。
(function(){
var video=document.getElementById('video'),
canvas = document.getElementById('canvas'),
vendorUrl = window.URL || window.webkitURL;
context = canvas.getContext('2d');
//photo = document.getElementById('photo');
navigator.getMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
navigator.getMedia({
video: true,
audio: false
}, function(stream){
video.srcObject=stream;
video.play();
}, function(error){
});
document.getElementById('capture').addEventListener('click',function(){
context.drawImage(video,0,0,400,300);
// photo.setAttribute('src',canvas.toDataURL('image/png'));
download();
});
})();
function download() {
var download = document.getElementById("capture");
var image = document.getElementById("canvas").toDataURL("image/png")
.replace("image/png", "image/octet-stream");
download.setAttribute("href", image);
//download.setAttribute("download","archive.png");
}
Run Code Online (Sandbox Code Playgroud)
这段代码可以很好地下载捕获的图像,但我没有办法将相同的图像上传到节点服务器。
我使用json从我的ipad向服务器发布数据.但随着我的数据,我需要能够发送图像.我试图将我的图像数据添加到字典并将其解析为json,但json不喜欢nscfdata.将图像发布到服务器的最简单方法是什么?从与此主题相关的其他帖子中,人们一直在转换为base64.我是否必须这样做,还是有另一种更容易或更快的方式?如果我必须编码到base64有任何教程吗?
http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/ 我正在按照本指南操作并遇到问题.我有一些问题.
所有的依赖都必须对应吗?我的项目有一些org.glassfish.jersey依赖项,本指南建议使用org.sun.jersey.我是否必须使用与此相同的版本进行更改?
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.16</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.16</version>
Run Code Online (Sandbox Code Playgroud)
我有这个错误
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. [[FATAL] No injection source found for a parameter of type public ***.***.****.common.dto.response.AbstractResponse ***.***.****.m2m.instancetypeupload.webservice.InstanceTypeUploadWebService.upload(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/json], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class ***.***.****.m2m.instancetypeupload.webservice.InstanceTypeUploadWebService, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@90516e]}, definitionMethod=public ***.***.***.common.dto.response.AbstractResponse ***.***.*****.m2m.instancetypeupload.webservice.InstanceTypeUploadWebService.upload(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition), parameters=[Parameter [type=class java.io.InputStream, source=file1, defaultValue=null], Parameter [type=class org.glassfish.jersey.media.multipart.FormDataContentDisposition, source=file1, defaultValue=null]], responseType=class ***.***.***.common.dto.response.AbstractResponse}, nameBindings=[]}']
Run Code Online (Sandbox Code Playgroud)
这是我的网络服务
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public AbstractResponse upload(@FormDataParam("file1") InputStream file1,
@FormDataParam("file1") FormDataContentDisposition filename1
) …Run Code Online (Sandbox Code Playgroud)我试图只提交一个非常大的表单的特定输入,我想使用ajax这样做.我有这个,它工作正常.这将在#someDiv中提交所有输入.
$(".save").click(function () {
dat = $.param($('#someDiv').find('input'));
$.ajax({
type: "POST",
url: "...",
data: dat,
success: function(data) {
//success
}
});
});
Run Code Online (Sandbox Code Playgroud)
然后我记得其中一些输入是文件输入,所以这不起作用.我做了一些研究,发现使用FormData是要走的路:
$(".save").click(function () {
dat = new FormData($('#someDiv').find('input'));
$.ajax({
type: "POST",
url: "...",
data: dat,
processData: false,
contentType: false,
success: function(data) {
//success
}
});
});
Run Code Online (Sandbox Code Playgroud)
但是这个函数不起作用,成功函数正在触发,但没有任何东西可以保存,所以我假设FormData没有正确创建.有任何想法吗?提前致谢