一网站,使用jQuery的uploadify方式上传文件,用AUTOIT如何模拟上传文件??
本帖最后由 yb980 于 2012-10-30 21:02 编辑如题:一网站,使用jQuery的uploadify方式上传文件,现在的问题是,如何用AUTOIT模拟上传文件??
思考了两三天了,一直不能解决,求解呀?
对了,最好是后台模拟!以操控浏览器方式,很容易的,但没有什么用 继续研究了N天,还是无头绪。唉,也没有人答一下 uploadify是基于flash或者html5上传的
你不开浏览器用个鸟uploadify上传 本帖最后由 yb980 于 2012-11-5 22:40 编辑
回复 3# drunk
有理,但是这个网站填一个表格,还要传附件,传附件用的就是JQUERY.UPLOADIFY.为了批量上传表单,用的是后台POST方法,一切都妥了,就是不能上传附件,连续攻克了一周了,把搭建UPLOADIFY研究了个遍,从版本2到版本3,都能搭建成功,但就是不能使用autoit弄成功.
但是我知道,相同网站相同表单,有人用C#做的桌面程序,完成了在后台不开网页批量传表单及附件功能,把我郁闷得不行....... 又补充,uploadify用的是javascript和flash 回复 6# yb980
人家能上传就是用了uploadify了吗?直接用au3 post上传不就行?我没试过,au3肯定可以的,我用过php模拟post上传过~ 因为那网站服务器端处理上传用的是JSP,也看不了源码,所以找不到上传文件的POST方法 感谢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 不懂,看看。,不知道可以模拟网页操作不..
页:
[1]