我想将图片上传到PHP页面。我试过base64编码。然后我尝试了WinHTTP。代码如下。问题是什么?或者有不同的方法吗?
AutoIt代码:
#include <ScreenCapture.au3>
$sScreenShotFile = @TempDir & "\ScreenShot.png"
$hScreenShot = _ScreenCapture_Capture($sScreenShotFile)
$hfile = FileOpen($sScreenShotFile, 16)
$sData = FileRead($hfile)
$oRequest = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oRequest.Open('POST', 'http://example.com/index.php', 0)
$oRequest.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
$oRequest.Send('screenshot=' & $sData)
PHP代码:
<?php
if(isset($_POST['screenshot']) && !empty($_POST['screenshot'])){
$file = fopen(dirname(__FILE__) . "/screenshot.png", "w+b");
fwrite($file, pack("H*" ,$_POST['screenshot']));
fclose($file);
}
?>
图片上传但内容不一样。我想二进制转换有问题。我使用此AutoIt代码打开二进制文件:
$hfile = FileOpen($sScreenShotFile, 16)
发送后我转换为字符串并在PHP中保存到文件:
$file = fopen(dirname(__FILE__) . "/screenshot.png", "w+b");
代码运行并创建文件,但内容传输不正确。
答案 0 :(得分:0)
AutoIt::
内容类型“
application/x-www-form-urlencoded
”效率低下 用于发送大量二进制数据或包含的文本 非ASCII字符。内容类型“multipart/form-data
”应为 用于提交包含文件,非ASCII数据和表单的表单 二进制数据。
PHP :请勿转换(尝试使用pack()
),因为fopen()
是使用'b'
调用的(强制二进制模式)。