是否有类似XHR的浏览器API可用于通过HTTP将二进制stream式传输到服务器? 我想做一个HTTP PUT请求,并且随着时间的推移以编程方式创build数据。 我不想一次创build所有这些数据,因为可能会有一些数据在内存中。 一些psueudo代码来说明我所得到的: var dataGenerator = new DataGenerator(); // Generates 8KB UInt8Array every second var streamToWriteTo; http.put('/example', function (requestStream) { streamToWriteTo = requestStream; }); dataGenerator.on('data', function (chunk) { if (!streamToWriteTo) { return; } streamToWriteTo.write(chunk); }); 我现在有一个web套接字解决scheme,但是更喜欢普通的HTTP与现有的服务器端代码更好地互操作。 编辑:我可以使用stream血的浏览器API。 我正在查看Fetch API,因为它支持ArrayBuffers,DataViews,Files等这样的请求体。 如果我可以以某种方式伪造这些对象之一,以便我可以使用具有dynamic数据的Fetch API,那对我来说是有用的。 我试图创build一个代理对象,看看是否有任何方法被称为我可以猴子补丁。 不幸的是,浏览器(至less在Chrome浏览器)正在用本地代码阅读,而不是在JS领域。 但是,如果我错了,请纠正我。
当我使用XMLHttpRequest时,使用FormData正确地上传文件。 但是,当我切换到jQuery.ajax ,我的代码中断。 这是工作的原始代码: function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); var xhr = new XMLHttpRequest(); xhr.open("POST", "upload.php", true); xhr.send(fd); } 这是我不成功的jQuery.ajax尝试: function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); var xm = $.ajax({ url: "upload.php", type: "POST", data: fd, }); } 我究竟做错了什么? 我怎样才能使用AJAX来正确上传文件?
我试图使用XMLHttpRequest (使用最近的Webkit)下载一个二进制文件,并使用这个简单的函数对它的内容进行base64编码: function getBinary(file){ var xhr = new XMLHttpRequest(); xhr.open("GET", file, false); xhr.overrideMimeType("text/plain; charset=x-user-defined"); xhr.send(null); return xhr.responseText; } function base64encode(binary) { return btoa(unescape(encodeURIComponent(binary))); } var binary = getBinary('http://some.tld/sample.pdf'); var base64encoded = base64encode(binary); 作为一个侧面说明,以上所有内容都是标准的Javascript东西,包括btoa()和encodeURIComponent() : https : //developer.mozilla.org/en/DOM/window.btoa 这工作相当顺利,我甚至可以使用Javascript解码base64内容: function base64decode(base64) { return decodeURIComponent(escape(atob(base64))); } var decodedBinary = base64decode(base64encoded); decodedBinary === binary // true 现在,我想使用Python解码base64编码的内容,它使用一些JSONstring来获得base64编码的string值。 天真地这就是我所做的: […]
我jQuery的jQuery的$.getJSON()函数返回一组简短的JSON数据。 我有JSON数据坐在像example.com这样的url上。 我没有意识到,但是当我访问相同的url时,无法加载JSON数据。 我跟随了控制台,发现XMLHttpRequest由于Access-Control-Allow-Origin而无法加载。 现在,我读了很多网站,刚才说的使用$.getJSON() ,这将是周围的工作,但显然这是行不通的。 有什么我应该改变标题或function? 非常感谢帮助。
我有一个文件的path,我想发送到其余的web服务的服务器。 我正在使用xmlhttprequest对象。 这个职位如下: var url = "http://localhost:8080/RestWSGS/jersey/gridsense"; var boundary = "————–" + (new Date).getTime(); xmlHttp.open('POST', url, true); xmlHttp.onreadystatechange = function () { if (this.readyState != 4) return; var result =this.responseText; document.write(result); }; xmlHttp.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary); var part =""; part += 'Content-Disposition: form-data; '; part += 'name="' + document.getElementById("filename").name + '" ; '; //alert(document.getElementById("filename").value); […]
像其他许多人一样,我的网站使用jQuery。 当我打开开发人员工具时,发现XMLHTTPRequest是一个警告 由于其对最终用户的经验的不利影响而被弃用。 我继续阅读部分文档 ,但这是相当技术性的。 有人可以用简单的术语来解释从XMLHTTPRequest转换到WHATWG的后果吗? 它说这发生在2012年。 另外,文档说,工作者之外的同步XMLHttpRequest正在被从Web平台上移除,当这种情况发生时,如果用户代理将他们放在服务中,他们是否需要修改他们现有的代码呢?
我看到以下错误: Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin 与此代码: var http = new getXMLHttpRequestObject(); var url = "http://gdata.youtube.com/action/GetUploadToken"; var sendXML = '<?xml version="1.0"?><entry xmlns="http://www.w3.org/2005/Atom"'+ 'xmlns:media="http://search.yahoo.com/mrss/'+ 'xmlns:yt="http://gdata.youtube.com/schemas/2007">'+ '<media:group><media:title type="plain">My First API</media:title>'+ '<media:description type="plain">First API</media:description>'+ '<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People</media:category>'+ '<media:keywords>first, api</media:keywords></media:group></entry>'; http.open("POST", url, true); http.setRequestHeader("Authorization", "AuthSub token=" + AccessToken); http.setRequestHeader("X-GData-Key", "key="+ dev_key); http.setRequestHeader("Content-Type", "application/atom+xml; charset=UTF-8"); http.onreadystatechange = function() { […]
我试图将下面的Angular 1代码转换成Angular 2: $http.jsonp('https://accounts.google.com/logout'); 它需要是一个JSONP请求来跳过CORS策略问题。
我们网站的用户运行我们的Chrome插件,其中包括通过Chrome扩展开发页面上描述的XMLHttpRequest执行跨源请求。 这几年来一直运行良好。 但是,自从我们的用户升级到最新版本的Chrome(v38)后,这些请求就失败了。 我们的网站运行在HTTPS上,并且通过我们的内容脚本加载的一些URL在HTTP上。 消息是: [blocked] https://www.ourpage.com/上的页面通过HTTPS加载,但是从http://www.externalpage.com运行不安全的内容:此内容也应该通过HTTPS加载。 发生错误的报告行位于发出HTTP调用的内容脚本中: xhr.send(null); 我无法控制外部页面,我宁愿不从我们自己的页面中删除SSL。 问题:这是一个错误还是有一个我不知道的解决方法? (注意:清单中的权限始终设置为<all_urls> ,这个权限已经工作了很长时间,将它设置为http://*/和https://*/并没有帮助。
我试图加载一个图像客户端和base64编码服务器返回的字节,以传递它来执行一些处理。 IE有一个XMLHttpRequest对象的RequestBody属性,但我似乎无法使用它,并且RequestText被截断。 在Firefox中,RequestText在那里,但似乎损坏。