此处将为大家介绍关于PHP–将文件转换为二进制文件并使用HTTPPOST发送它的详细内容,并且为您解答有关php文件转换器的相关问题,此外,我们还将为您介绍关于android–使用HTTPPOST发送
此处将为大家介绍关于PHP – 将文件转换为二进制文件并使用HTTP POST发送它的详细内容,并且为您解答有关php文件转换器的相关问题,此外,我们还将为您介绍关于android – 使用HTTP POST发送文件> 1MB、AngularJS $http-post - 将二进制文件转换为 excel 文件并下载、angularjs – 如何使用http在角度js中下载二进制文件、asp.net – 无法将许可证文件转换为二进制资源的有用信息。
本文目录一览:- PHP – 将文件转换为二进制文件并使用HTTP POST发送它(php文件转换器)
- android – 使用HTTP POST发送文件> 1MB
- AngularJS $http-post - 将二进制文件转换为 excel 文件并下载
- angularjs – 如何使用http在角度js中下载二进制文件
- asp.net – 无法将许可证文件转换为二进制资源
PHP – 将文件转换为二进制文件并使用HTTP POST发送它(php文件转换器)
我的部分代码是:
$context = stream_context_create(array( 'http' => array( 'method' => 'POST','header' => "Content-type: " . $this->contentType."",'content' => "file=".$file ) )); $data = file_get_contents($this->url,false,$context);
变量$file是否必须是我要发送的文件的字节表示?
并且这是在不使用表单的情况下在PHP中发送文件的正确方法吗?你有线索吗?
另外,使用PHP将文件转换为字节表示的方法是什么?
解决方法
function curlPost($url,$file) { $ch = curl_init(); if (!is_resource($ch)) return false; curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER,0 ); curl_setopt( $ch,CURLOPT_FOLLOWLOCATION,CURLOPT_URL,$url ); curl_setopt( $ch,CURLOPT_POST,1 ); curl_setopt( $ch,CURLOPT_POSTFIELDS,'@' . $file ); curl_setopt( $ch,CURLOPT_RETURNTRANSFER,CURLOPT_VERBOSE,0 ); $response = curl_exec($ch); curl_close($ch); return $response; }
其中$url是您要发布到的位置,$file是您要发送的文件的路径.
android – 使用HTTP POST发送文件> 1MB
我正在将我的Android应用程序中的视频和音频文件发送到Wampserver,其中一些可能会变得非常大,当文件大小超过1MB时,我倾向于出现OutofMemory问题.
我将每个文件单独转换为字节流.我认为字节流太大,因此OutofMemory.
如何阻止此错误发生?
解决方法:
使用此处建议的Maxium链接:
Uploading files to HTTP server using POST on Android.
然后我发现这个Out of Memory error in android来修复错误.
更换:
while (bytesRead > 0)
{
outputStream.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
有:
while (bytesRead > 0){
bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte byt[]=new byte[bufferSize];
fileInputStream.read(byt);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
outputStream.write(buffer, 0, bufferSize);
}
AngularJS $http-post - 将二进制文件转换为 excel 文件并下载
我在 Angular JS 中创建了一个应用程序,用于通过 $http post 下载 Excel 工作簿。
在下面的代码中,我以 JSON 的形式传递信息,并通过有角度的 $http 帖子将其发送到服务器 REST Web 服务 (java)。Web 服务使用来自 JSON 的信息并生成 Excel 工作簿。在 $http post 的成功正文中的响应中,我在该数据变量中获取二进制数据,但不知道如何将其转换并下载为 Excel 文件。
谁能告诉我一些将二进制文件转换为 Excel 文件并下载的解决方案?
我的代码如下所示:
$http({ url: ''myweb.com/myrestService'', method: "POST", data: json, //this is your json data string headers: { ''Content-type'': ''application/json'' } }).success(function (data, status, headers, config) { // Here i''m getting excel sheet binary datas in ''data'' }).error(function (data, status, headers, config) { });
答案1
小编典典只是注意到由于 IE8/9 而无法使用它,但我还是会推送提交……也许有人觉得它有用
这实际上可以通过浏览器完成,使用blob
. 注意 Promise 中的responseType
和 代码success
。
$http({ url: ''your/webservice'', method: "POST", data: json, //this is your json data string headers: { ''Content-type'': ''application/json'' }, responseType: ''arraybuffer''}).success(function (data, status, headers, config) { var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); var objectUrl = URL.createObjectURL(blob); window.open(objectUrl);}).error(function (data, status, headers, config) { //upload failed});
虽然它存在一些问题,例如:
- 它不支持IE 8 和 9:
- 它会打开一个弹出窗口以打开
objectUrl
可能被阻止的人 - 生成奇怪的文件名
它确实奏效了!
我测试过的 PHP 中的服务器端代码如下所示。我确定您可以在 Java 中设置类似的标头:
$file = "file.xlsx";header(''Content-disposition: attachment; filename=''.$file);header(''Content-Length: '' . filesize($file));header(''Content-Transfer-Encoding: binary'');header(''Cache-Control: must-revalidate'');header(''Pragma: public'');echo json_encode(readfile($file));
编辑 20.04.2016
浏览器使以这种方式保存数据变得更加困难。一个不错的选择是使用filesaver.js。它为 提供了一个跨浏览器的实现saveAs
,它应该替换success
上面 Promise 中的一些代码。
angularjs – 如何使用http在角度js中下载二进制文件
$http({ url: url,method: "GET",headers: { 'Content-type': 'application/json' } }).success(function (data,status,headers,config) { console.log(data); window.open(objectUrl); }).error(function (data,config) { //upload Failed });
任何帮助,将不胜感激.
解决方法
Given code will help you to download exe file as well as to check
browser compatibility.
var ieEDGE = navigator.userAgent.match(/Edge/g); var ie = navigator.userAgent.match(/.NET/g); // IE 11+ var oldIE = navigator.userAgent.match(/MSIE/g); var blob = new window.Blob([data.data],{ type: 'application/x-msdownload' }); if (ie || oldIE || ieEDGE) { var fileName="filename"+'.exe'; window.navigator.msSaveBlob(blob,fileName); } else { var file = new Blob([ data.data ],{ type : 'application/x-msdownload' }); var fileURL = URL.createObjectURL(file); var a = document.createElement('a'); a.href = fileURL; a.target = '_blank'; a.download = "filename"+'.exe'; document.body.appendChild(a); a.click(); } //Successfully Downloaded
asp.net – 无法将许可证文件转换为二进制资源
Could not transform licenses file into a binary resource. (1) : error LC0004 : Exception occurred creating type 'Infragistics.WebUI.WebDataInput.WebDateTimeEdit,Infragistics.WebUI.WebDataInput.v5.1,Version=5.1.20051.37,Culture=neutral,PublicKeyToken=7dd5c3163f2cd0cb System.ComponentModel.LicenseException: Unable to locate license assembly.at System.ComponentModel.LicenseManager.CreateWithContext(Type type,LicenseContext creationContext,Object[] args) at System.Tools.LicenseCompiler.GenerateLicenses(String fileContents,String targetPE,ITypeResolutionService resolver,DesigntimeLicenseContext ctx)'
解决方法
当我们已经分支了一个解决方案(svn)以便在需要时用于补丁生产时,这种情况就发生了.当我从分支机构构建解决方案时,它给了我一个类似的错误,谈论基于索引(零)等等等等等等.事实证明我的.licx文件上有一个空行,导致错误.删除空行可解决问题.
只是发布以防万一这有助于其他人.
问候,
今天关于PHP – 将文件转换为二进制文件并使用HTTP POST发送它和php文件转换器的分享就到这里,希望大家有所收获,若想了解更多关于android – 使用HTTP POST发送文件> 1MB、AngularJS $http-post - 将二进制文件转换为 excel 文件并下载、angularjs – 如何使用http在角度js中下载二进制文件、asp.net – 无法将许可证文件转换为二进制资源等相关知识,可以在本站进行查询。
本文标签: