酷狐社区

注册 登录
  • 会员
  • 统计
  • 转贴工具
  • 帮助

酷狐社区 » Ajax » ajax上传(xmlhttp上传文件突破大小限制)

‹‹ 上一主题 | 下一主题 ››
发新话题
  • 发新话题
  • 发布投票
  • 发布商品
  • 发布悬赏
  • 发布活动
  • 发布辩论
  • 发布视频
打印

ajax上传(xmlhttp上传文件突破大小限制)


    上传提示:Microsoft ADO/RDS
此页正在访问其他域的数据。您允许这样做吗?
  

  
    您的图片
    

  
  
    
  

koofox

管理员

Rank: 9Rank: 9Rank: 9

终身成就奖 特殊贡献奖 金点子奖 宣传大使奖 原创先锋奖

  • 发短消息
  • 加为好友
  • 当前离线
楼主 大 中 小 发表于 2007-5-22 08:35  只看该作者
社区随机主题列表: 社区最新回复列表:
台湾小姐陈盈之跳楼身亡 撞见男友与新欢偷情
金喜善怀孕照网上曝光 一身黑衣小腹隆起
讓人看了都會心動
公园里一对男女谈恋爱,旁观的老大妈忽发超级雷人的一句 ...
成都・锦里
我被她们的美丽征服了
跟网友见面不上床的后果!!!
很多情侣看了后,晚上不再关机了
爆笑:皇上和娘娘做爱被太监偷听
一句话噎死对手
李嘉欣身体迷倒富豪十大瞬间
不靠运动 裤装SOS美腿秘籍

ajax上传(xmlhttp上传文件突破大小限制)

原标题就是括号中的,但现在流行ajax,所以就改成这个了,呵呵

upload.htm

File upload




  








var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

var st, up
try{
 st = new ActiveXObject("ADODB.Stream");
 up = true
}
catch(e){
 up = false
}
function upload.upbtn.onclick(){
 var uPic = upload.pic.value
 if (validPic()!="") alert(validPic())
 else{
  if(!up) alert("您的浏览器版本太低,无法上传图片,请升级您的浏览器!")
  else{
   st.Type = 1;
   st.Open(); 
   try{
    st.LoadFromFile(uPic);
    var db = st.Read()
    st.close()
    var txtP = splitString(ByteToStr(db),100000)//这里把已经转换成字符串的文件切割一下,我是按10万字节长度切割的,也就是50KB
    var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
    xmldoc.loadXML('');
    for (var i=0;i     var iPic = xmldoc.createElement("pic")
     iPic.text = txtP;
     xmldoc.documentElement.appendChild(iPic);
    }
    xmlhttp.open("POST","upload.asp",true);
    xmlhttp.onreadystatechange = rep
    xmlhttp.send(xmldoc);
   }
   catch(e){alert("无法找到文件!\n"+e.description)}
  }
 }
}

function rep(){
 if(xmlhttp.readyState==4){
  if (xmlhttp.status==200){
   alert(xmlhttp.responseBody)
   location.reload()
  }else
   alert("status:"+xmlhttp.status+"\n"+xmlhttp.statusText)
 }
}

function validPic(){
 var maxSize = 500//最大的尺寸限制
 var str = ''
 var thisPic = new Image();
 thisPic.src = upload.pic.value
 if(thisPic.src=="") str = '请选择您要上传的图片'
 else{
  var picSize = thisPic.fileSize/1024
  if(picSize>maxSize) str = '上传的图片不要大于'+maxSize+'KB,您的图片有'+picSize+'KB'
  else{
   var sPic = thisPic.src.split(".")
   var pf = sPic[sPic.length-1].toLowerCase()
   str = '未知的图片格式!'
   var picF = new Array("gif","jpg","jpeg","bmp")
   for (var i=0;i    if (pf==picF){
     str = ''
     break
    }
   }
  }
 }
 return str
}

//把二进制文件转换成字符串
function ByteToStr(p){
 var xmldom = new ActiveXObject("Microsoft.XMLDOM");
 xmldom.async = false
 xmldom.loadXML('');
 var tPic = xmldom.createElement("pic")
 tPic.dataType = 'bin.hex'
 tPic.nodeTypedValue = p
 xmldom.documentElement.appendChild(tPic);
 return(String(tPic.text))
}

//把字符串按你想要的长度切割
function splitString(s,l){
 var h = s.length
 var al = (s.length%l==0)?h/l:parseInt(String((s.length/l)).split(".")[0])+1
 var a = new Array(al)
 for (var i=0;i  a = s.substring(i*l,l*(i+1))
 return(a)
}



upload.asp
<%@ LANGUAGE=VBScript%>
<%Option Explicit%>
<%
Response.ContentType="text/xml"
Response.Charset="UTF-8"
dim xmldom
dim root,pic
set xmldom = Server.CreateObject("Microsoft.XMLDOM")
xmldom.async = false
xmldom.load Request
if xmldom.parseError.errorCode<>0 then
 Response.BinaryWrite "未知的错误!"
else
 if xmldom.readyState=4 then
  xmldom.save Server.MapPath("image.xml")
  Response.BinaryWrite "上传成功!"
  '如果想直接放到数据库,就这么着:
  'dim i,a,txtP,byteP
  'set a = xmldom.documentElement.selectNodes("/root/pic")
  'txtP = ""
  'for i=0 to a.length-1
  'txtP = txtP & a(i).text
  'next
  'byteP = StrToByte(txtP)'这就是你要的东东
 end if
end if
%>

function StrToByte(str){
 var xmldom = Server.CreateObject("Microsoft.XMLDOM")
 xmldom.loadXML('')
 var bPic = xmldom.createElement("pic")
 bPic.dataType = "bin.hex"
 bPic.nodeTypedValue = str
 xmldom.documentElement.appendChild(bPic)
 return(bPic.nodeTypedValue)
}


image.asp
<%@language=jscript%>
<%
var xmldoc = new ActiveXObject("Microsoft.XMLDOM")
xmldoc.async = false
xmldoc.load(Server.MapPath("image.xml"))
if (xmldoc.parseError.errorCode!=0){
 Response.Write("error")
}else{
 var a = xmldoc.documentElement.selectNodes("/root/pic")
 var pic = ''
 for (var i=0;i  pic += a.text//这里就是把数据重组
 Response.BinaryWrite(StrToByte(pic))
}

//把字符串转换成二进制流
function StrToByte(str){
 var XMLDOC = Server.CreateObject("Microsoft.XMLDOM")
 XMLDOC.loadXML('')
 var bPic = XMLDOC.createElement("pic")
 bPic.dataType = "bin.hex"
 bPic.nodeTypedValue = str
 XMLDOC.documentElement.appendChild(bPic)
 return(bPic.nodeTypedValue)
}
%>

增强信息技术;感悟商业管理;探索商业与技术融合;丰富自我修养!自信来源于知识,气质来源于财富!~
UID
1 
帖子
2591 
精华
2 
积分
3731 
阅读权限
200 
在线时间
864 小时 
注册时间
2006-11-17 
最后登录
2008-12-4 

查看详细资料

TOP

本版热门主题

  • [koofox]ajax上传(xmlhttp上传文件突破大小限制)
  • [koofox]Ajax开发:php与Javascript通讯的字符编码问题 ...
  • [koofox]用createPopup提示消息JS代码
  • [爱雨冷雪]不该忽视的5个web2.0概念
  • [koofox]省市二级联动菜单javascript版
  • [koofox]Web 2.0应用存在缺陷 Javascript导致泄密
  • [koofox]调查显示大公司Web2.0技术更受青睐
  • [koofox]制作网页过程中有些代码是经常要用到的 ...
  • [flyfox]网页常用小技巧(JavaScript)
  • [koofox]Javascript 解析,格式化日期

活跃会员

  • devsky

  • flyfox

  • koofox

  • bluefox

  • melody

  • 痞子飞

  • 鉴图er

  • tbklz

  • sunday

‹‹ 上一主题 | 下一主题 ››
发新话题
  • 控制面板首页
  • 编辑个人资料
  • 积分交易
  • 积分记录
  • 公众用户组
  • 勋章
  • 基本概况
  • 版块排行
  • 主题排行
  • 发帖排行
  • 积分排行
  • 交易排行
  • 在线时间
  • 管理团队

当前时区 GMT+8, 现在时间是 2008-12-5 08:28 京ICP备06002727号

清除 Cookies - 联系我们 - 酷狐社区 - Archiver - WAP - TOP - 界面风格

  • 默认风格
  • 喝彩奥运
  • 深邃永恒
  • 粉妆精灵
  • 诗意田园
  • 春意盎然

Discuz!

Powered by Discuz! 6.1.0 © 2001-2008 Comsenz Inc.

Processed in 0.084011 second(s), 8 queries, Gzip enabled.