使aspx页面能接受HTML,asp的页面传送的文件

时间:2007-01-21 14:06:24   来源:  作者:  点击:次  出处:技术无忧
关键字:使as

 /***********************************************************************
  byte[] bytes1 = System.Text.Encoding.Default.GetBytes("这是字符串/n/n/n/n");
  byte[] bytes2 = new byte[] { 1, 33, 23, 3, 0, 56, 55, 235, 5 };//二进制数

  byte[] bytes = new byte[bytes1.Length + bytes2.Length];

  //合并二进制流
  MemoryStream ms = new MemoryStream(bytes);
  ms.Write(bytes1, 0, bytes1.Length);
  ms.Write(bytes2, 0, bytes2.Length);

  int count = 0, pos = 0;
  //开始找四个'/n'
  for (int i = 0; i < bytes.Length; i++)
  {
   if (bytes[i] == (int)'/n')
   {
    count++;
    if (count == 4)
    {
     pos -= 4;
     break;
    }
   }
  }

  if (count == 4)
  {
   //这里,bytes字节数组里从0 到 pos 的位置就是你要的字符串
   //从pos + 5 开始到最后,就是你要的二进制
  }
  ***********************************************************************/
  byte[] fileData, formData;

  formData = Request.BinaryRead(Request.ContentLength);
  string head = String.Empty;
  Encoding encoding = Encoding.UTF8;

  long pos = 0;
  for (long i = 0; i < formData.LongLength; i++)
  {
   if (formData[i] == (byte)'/r' && formData[i + 1] == (byte)'/n' && formData[i + 2] == (byte)'/r' && formData[i + 3] == (byte)'/n')
   {
    pos = i;
    break;
   }
  }
  if (pos == 0) { Response.End(); return; }
  head = encoding.GetString(formData, 0, (int)pos);
  fileData = new byte[formData.LongLength - pos - 3];
  Array.Copy(formData, pos + 4, fileData, 0, formData.LongLength - pos - 4);
  /*********************************************************************
  //传来的表单形式是:
  //"-----------------------------7d5fa3820f84/r/nContent-Disposition: form-data; name=/"NewFile/"; filename=/"F://Documents//4(10995).jpg/"/r/nContent-Type: image/pjpeg/r/n/r/n
  //后面是文件数据
   *********************************************************************/
  head = head.ToLower();
  head = head.Remove(0, head.IndexOf("/r/n") + 2);
  head = head.Replace("/"", "");
  string postFileName = string.Empty;
  string fileName;//no path
  string fileType, fileExt;
  postFileName = head.Substring(0, head.IndexOf("/r/n"));//Content-Disposition: form-data; name=/"NewFile/"; filename=/"F://Documents//4(10995).jpg/"
  fileType = head.Remove(0, postFileName.Length + 3);//returns:Content-Type: image/pjpeg
  postFileName = postFileName.Substring(postFileName.IndexOf("filename=") + "filename=".Length);//C:/path/name
  fileName = Path.GetFileName(postFileName);
  fileExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
  if (fileData.LongLength > maxSize) {
   SendResults(2, ResolveUrl(savePath + fileName), fileName, "Too large");
   return;
  }
  bool isallow=false;
  foreach(string ext in denyedExt){
   if (ext == fileExt) {
    isallow = false;
    SendResults(202, ResolveUrl(savePath + fileName), fileName, "forrbiden");
    return;
   }
  }

  foreach (string ext in allowedExt) {
   if (ext == fileExt) { isallow = true; break; }
  }
  if ( isallow)
  {
   string tmpPath = Server.MapPath(savePath);
   if (!Directory.Exists(tmpPath)) {
    try
    {
     Directory.CreateDirectory(tmpPath);
    }
    catch { SendResults(200, ResolveUrl(savePath + fileName), fileName, "没有写入权限"); }
   }
   //Response.BinaryWrite(fileData);
   FileStream savefileStream= new FileStream(tmpPath+fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
   for (long i = 0; i < fileData.LongLength; i++)
   {
    savefileStream.WriteByte(fileData[i]);
   }
   savefileStream.Close();
   SendResults(0, ResolveUrl(savePath + fileName), fileName, "No errors");

  }

 }
}


config.xml
<?xml version="1.0" encoding="utf-8"?>
<upload>
    <enabled>true</enabled>
    <userPath></userPath>
 <maxSize>500000</maxSize><!--unit is byte-->
    <file>
        <allow>zip|rar</allow>
        <deny>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</deny>
    </file>
    <image>
        <allow>jpg|gif|jpeg|png|bmp</allow>
        <deny></deny>
    </image>
    <flash>
        <allow>swf|fla</allow>
        <deny></deny>
    </flash>
</upload>

欢迎收藏Pc51.Net技术无忧网


相关文章

    无相关信息

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

300x250广告位招租