you need to encode the binary, for example, with base64 encoding with Convert.ToBase64String Method (Byte[]), seeXML, SOAP, and Binary Data
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/infoset_whitepaper.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/infoset_whitepaper.asp
[WebMethod(Description="本WebService实现文件上传功能!")]
public void xmlUpLoad(string fileUrl,string fileName,string fileType,byte[] fileContent,DateTime uploadTime)
{
strContent=Convert.ToBase64String(fileContent);
bool blnExists=false;
StreamWriter writer=null;
string xmlFile=fileUrl+fileName+".xml";
blnExists=File.Exists(xmlFile);
if(!blnExists)
{
writer=new StreamWriter(File.Open(xmlFile,FileMode.Create,FileAccess.Write),System.Text.Encoding.Default);
writer.WriteLine("<?xml version=\"1.0\" encoding=\"gb2312\" ?>");
writer.WriteLine("<upload>");
writer.WriteLine("<filename>"+fileName+"</filename>");
writer.WriteLine("<filetype>"+fileType+"</filetype>");
writer.WriteLine("<filecontent>"+strContent+"</filecontent>");
writer.WriteLine("<date>"+uploadTime+"</date>");
writer.WriteLine("</upload>");
writer.WriteLine();
writer.Flush();
writer.Close();
}
}
private void xmlDownLoad(string filePath)
{
XmlDocument doc=new XmlDocument();
doc.Load(filePath);
XmlNode node=doc.SelectSingleNode("/upload/filecontent");
string file=node.InnerText;
XmlNode node1=doc.SelectSingleNode("/upload/filetype");
string fType=node1.InnerText;
XmlNode node2=doc.SelectSingleNode("/upload/filename");
string fName=node2.InnerText;
byte[] myFile=Convert.FromBase64String(file);
Response.ClearHeaders();
Response.ClearContent();
//文件类型
Response.AddHeader("Content-Type",fType);
//下载文件(解码解决了文件中文名下载乱码的问题)
Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode( System.Text.Encoding.UTF8.GetBytes(fName)));
HttpContext.Current.Response.OutputStream.Write(myFile,0,myFile.Length);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
请问在Web上怎么实现?我怎么才能调用上传方法?