如何发送xml字符串中的二进制数据上面并将BinaryFileString标签中接收到的二进制字符串转换为filetype="属性指定的文件。文件类型可以是doc/pdf/xls/rtf并且我在调用应用程序中有代码从文件中取出字节已发送。我如何准备将它与包裹在它周围的xml标记一起发送?我希望应用程序将字符串而不是字节流发送到组件。这是因为我无法通过查看流来解密它字节FileType[pdf/doc/xls]。所以带有文件类型属性的xml字符串。有什么想法吗?提取FileStreamfs以下字节的方法=newFileStream(_filePath,FileMode.Open,FileAccess.Read);使用(Streaminput=fs){byte[]buffer=newbyte[8192];intbytesRead;while((bytesRead=input.Read(buffer,0,buffer.Length))>0){}}returnbuffer;谢谢。编辑:只是为了阐明为什么我使用xml字符串而不是在我的组件上设置属性。实际上,我的调用应用程序试图模拟Siebel如何调用我的组件。http://download.oracle.com/docs/cd/E05553_01/books/eScript/eScript_JSReference244.html#wp1014380我不确定Siebel是否可以根据需要设置我的组件属性。所以我正在查看它以xml格式发送数据的角度。Base64表示通常用于表示二进制数据。publicvoidEncodeWithString(){System.IO.FileStreaminFile;byte[]二进制数据;尝试{inFile=newSystem.IO.FileStream(inputFileName,System.IO.FileMode.Open,System.IO.FileAccess.Read);binaryData=newByte[inFile.Length];longbytesRead=inFile.Read(binaryData,0,(int)inFile.Length);inFile.Close();}catch(System.Exceptionexp){//创建流或从中读取时出错。System.Console.WriteLine("{0}",exp.Message);返回;}//将二进制输入转换为Base64UUEncoded输出。字符串base64String;尝试{base64String=System.Convert.ToBase64String(binaryData,0,binaryData.Length);}catch(System.ArgumentNullException){System.Console.WriteLine("二进制数据数组为空。");返回;}//将UUEncoded版本写入XML文件。System.IO.StreamWriter输出文件;尝试{outFile=newSystem.IO.StreamWriter(outputFileName,false,System.Text.Encoding.ASCII);outFile.Write("");outFile.Write(base64String);outFile.Write("");欧tFile.Close();}catch(System.Exceptionexp){//创建流或写入流时出错。System.Console.WriteLine("{0}",exp.Message);在接收端,您可以撤消此操作并获取原始文件内容,如下所述//将Base64UUEncoded输入转换为二进制输出。byte[]二进制数据;尝试{binaryData=System.Convert.FromBase64String(base64String);}catch(System.ArgumentNullException){System.Console.WriteLine("Base64stringisnull.");返回;}catch(System.FormatException){System.Console.WriteLine("Base64stringlengthisnot"+"4orisnotanevenmultipesof4.");返回;你可以BASE64你的字节吗?MSDN参考:Convert.ToBase64,Convert.FromBase64String扩展@russau的答案它会像这样工作:vars="HelloWorld";varb=Encoding.Default.GetBytes(s);varbstr=Convert.ToBase64String(b);Console.WriteLine("原始字符串:"+s);Console.WriteLine("Base64字符串:"+bstr);varfromBStr=Convert.FromBase64String(bstr);varst=Encoding.Default.GetString(fromBStr);Console.WriteLine("转换后的字符串:"+st);您不需要前两行:vars="HelloWorld";varb=Encoding.Default.GetBytes(s);因为你已经有了一个字节数组。我使用字符串来表明,当您从Convert.FromBase64String转换字节数组时,您会得到与开始时完全相同的结果。您提到您正在调用C#组件。我不确定我是否理解为什么使用此组件意味着您需要创建一个XML字符串。是否可以定义类来保存数据而不是使用XML字符串?例如publicenumFileType{Word,Excel,RichText,PDF}publicclassFileData{publicFileTypeTypeOfFile{get;放;}publicbyte[]数据{得到;放;然后组件的调用者只需设置FileType和byte[]。然后将更明确地定义组件的接口(FileData类,而不是更通用的String或XmlDocument)。以上就是C#学习教程:Howtosendbinarydatainanx??mlstring的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
