无限制文件上传(.Net)

本文件参考了网上一些文章后,改写而成。但还有一些地方有待改进。如有更好的方式,请联系我。
需求描述:为实现客户端采集图像,然后把图像发送到服务端进行处理(图像一般很小)。
实现方式:由于由系统决定传递什么文件,所以这样就不能够采用传统的方式(让用户来选择一个文件上传)。
                      我暂时采用XML来传递数据,把图片信息以流的方式存储在一个节点中,然后把该XML文件上传到服务端,在服务端取得该XML信息,最后转换出我们需要的图片信息,这时我们就可以想怎么对图片进行处理就怎么处理了。

代码如下:
客户端我用了AxtiveX控件,用VB6.0编写。也可以把他放在脚本中。本人的对JavaScript不甚熟悉,加上ActivX控件还能为我处理一些采集图像的工作。所以,……

'功    能:把本地文件以XML文件形式上传到服务器端,图片节点的数据类型为"bin.base64"
'参数说明:FileName,本地全文件名
'代码参考:http://www.15seconds.com/issue/010522.htm
'
Private Function getValue(FileName As String)
Dim oStream As Stream
Dim xml_dom As DOMDocument
    Set oStream = New Stream
    Set xml_dom = New DOMDocument
   
    xml_dom.loadXML ("<?xml version=" + "" + """1.0""" + "" + " ?> <root/>")
    xml_dom.documentElement.setAttribute "xmlns:dt", "urn:schemas-microsoft-com:datatypes"
    Dim l_node1 As IXMLDOMElement
    Set l_node1 = xml_dom.createElement("StreamDataNode")
    l_node1.dataType = "bin.base64"
    oStream.Type = adTypeBinary
  
    oStream.Open
    oStream.LoadFromFile FileName   '读入所有数据
    oStream.Position = 0            '从起始位置开始
  
    l_node1.nodeTypedValue = oStream.Read   '把数据流给节点赋值
    oStream.Close   '关闭对象
    xml_dom.documentElement.appendChild l_node1
    Dim oxmlHttp As New XMLHTTP
    oxmlHttp.Open "POST", RequestUrl, False
    '发送数据到服务端
    oxmlHttp.send xml_dom
   
    Set oStream = Nothing
    Set xml_dom = Nothing

End Function

服务端用C#做编程语言

private void Page_Load(object sender, System.EventArgs e)
{
   // 在此处放置用户代码以初始化页面
   //读取流,有待改进,未对文件大小等信息做限制,也没有处理异常。
   if (Request.InputStream.Length>0)
   {
        System.IO.StreamReader stm = new System.IO.StreamReader(Request.InputStream);
        XmlTextReader xmlRd = new XmlTextReader(stm);
        xmlRd.WhitespaceHandling = WhitespaceHandling.None;

        byte[] b= new byte[stm.BaseStream.Length];
        while(xmlRd.Read())
        {
             if (xmlRd.Name.ToLower()==CN_NodeName.ToLower())
             {      
              xmlRd.ReadBase64(b,0,Convert.ToInt32(stm.BaseStream.Length));      
              break;
         }      
        //数据已保存在  b 中。做自己爱做的事情………………


posted on 2006-01-19 10:29  凌风  阅读(946)  评论(3编辑  收藏  举报

导航