找回密码
 加入
搜索
查看: 7264|回复: 9

[网络通信] 一网站,使用jQuery的uploadify方式上传文件,用AUTOIT如何模拟上传文件??

  [复制链接]
发表于 2012-10-30 21:00:22 | 显示全部楼层 |阅读模式
本帖最后由 yb980 于 2012-10-30 21:02 编辑

如题:一网站,使用jQuery的uploadify方式上传文件,现在的问题是,如何用AUTOIT模拟上传文件??
思考了两三天了,一直不能解决,求解呀?
对了,最好是后台模拟!以操控浏览器方式,很容易的,但没有什么用
 楼主| 发表于 2012-11-5 15:16:53 | 显示全部楼层
继续研究了N天,还是无头绪。唉,也没有人答一下
发表于 2012-11-5 16:02:19 | 显示全部楼层
uploadify是基于flash或者html5上传的
你不开浏览器用个鸟uploadify上传
 楼主| 发表于 2012-11-5 22:39:38 | 显示全部楼层
本帖最后由 yb980 于 2012-11-5 22:40 编辑

回复 3# drunk


    有理,但是这个网站填一个表格,还要传附件,传附件用的就是JQUERY.UPLOADIFY.为了批量上传表单,用的是后台POST方法,一切都妥了,就是不能上传附件,连续攻克了一周了,把搭建UPLOADIFY研究了个遍,从版本2到版本3,都能搭建成功,但就是不能使用autoit弄成功.
   但是我知道,相同网站相同表单,有人用C#做的桌面程序,完成了在后台不开网页批量传表单及附件功能,把我郁闷得不行.......
 楼主| 发表于 2012-11-5 22:42:07 | 显示全部楼层
又补充,uploadify用的是javascript和flash
发表于 2012-11-6 14:16:48 | 显示全部楼层
回复 6# yb980


    人家能上传就是用了uploadify了吗?直接用au3 post上传不就行?我没试过,au3肯定可以的,我用过php模拟post上传过~
 楼主| 发表于 2012-11-9 22:34:49 | 显示全部楼层
因为那网站服务器端处理上传用的是JSP,也看不了源码,所以找不到上传文件的POST方法
 楼主| 发表于 2012-11-11 18:48:42 | 显示全部楼层
感谢DRUNK,真弯路了,最后以POST上传方式解决!
Global $ScanFile = FileOpenDialog("open",@WindowsDir & "\", " 所有文件 (*.*)", 1)
;MsgBox(0,"打开文件为",$ScanFile)
;Global $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
Global $oHTTP = ObjCreate("MSXML2.XMLHTTP")
;$oHTTP.Option(0) = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'

Local $boundary = MakeBoundary();上传分隔线
Local $binhead = $boundary & @CRLF & _
                                                'Content-Disposition: form-data; name="Filedata"; filename="' & $ScanFile & '"' & @CRLF & _
                                                'Content-Type: application/octet-stream' & @CRLF & @CRLF
$binhead = StringToBinary($binhead);二进制
        
Local $hopen = FileOpen($ScanFile,16);二进制读取文件
If $hopen = -1 Then
    MsgBox(4096, "错误", "不能打开文件.")
    Exit
EndIf

Local $binbody = FileRead($hopen)
FileClose($hopen)


Local $binfoot = @CRLF & $boundary & @CRLF & _
                                                'Content-Disposition: form-data; name="folder"' & @CRLF & @CRLF & _
                                                '/uploads' & @CRLF & _
                                                $boundary & '--' & @CRLF ;最前的换行别忘了,"--"表示结束符
$binfoot = StringToBinary($binfoot);二进制

Local $bindata, $upurl
$binsend = $binhead & $binbody & $binfoot
;MsgBox(0,"send文件为",$binsend)
$oHTTP.Open("POST", "http://127.0.0.1/uploadify.php", False)
;$oHTTP.setRequestHeader("Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/x-ms-xbap, application/x-ms-application, application/msword, application/vnd.ms-excel, vnd.ms-powerpoint, */*")
$oHTTP.setRequestHeader("Content-Type", "multipart/form-data; boundary=" & StringTrimLeft($boundary, 2))
$oHTTP.Send($binsend)
MsgBox(0,"将响应信息作为字符串返回",$oHTTP.responsetext)                                                                ;显示登录后返回的响应(字符串形式)
MsgBox(0,"获取响应的所有http头",$oHTTP.getAllResponseHeaders())                                                ;显示登录后返回的响应头



Func MakeBoundary()
        ;7d为IE特殊标记,其他未细究
        Local $bou = '-----------------------------7dc3b00000000a'        
                Local $rn = Random(11111111,99999999,1)
        $bou = StringReplace($bou, '00000000', $rn)
        Return $bou
EndFunc
发表于 2012-11-11 19:20:47 | 显示全部楼层
不懂,看看。,不知道可以模拟网页操作不..
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-24 10:16 , Processed in 0.167235 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表