我有一个文件上传表单,我也想使用Google reCAPTCHA。
如果我有以下
<form method="post">
<input type="file" name="filename">
<div class="g-recaptcha" data-sitekey="***"></div>
<input id="submit" name="submit" type="submit" value="Submit">
</form>
我可以使用reCAPTCHA,但无法上传文件。
但是,如果我使用:
<form method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<div class="g-recaptcha" data-sitekey="***"></div>
<input id="submit" name="submit" type="submit" value="Submit">
</form>
我可以成功上传文件,并使用reCAPTCHA ,前提是该文件是文本文件。如果我尝试上传pdf文件,我无法使其工作。
上传文本文件时,$ _POST包含&#39; g-recaptcha-response&#39;,但在上传pdf时,$ _POST不包含&#39; g-recaptcha-response&# 39;
有人可以解释这里出了什么问题吗?
修改 看起来它实际上是一个文件大小的问题。 无论格式如何,都无法发送大于~200kb的文件。
我的php.ini文件中有upload_max_filesize = 2M,所以我不确定为什么200kb太大了......
有什么想法吗?
编辑2:更多信息
看起来$ _FILE包含错误代码3:UPLOAD_ERR_PARTIAL。
我不明白为什么文件无法完全上传。
编辑3:到达某个地方
我现在可以上传文件了。看来我需要在文件输入之前放置reCAPTCHA
<form method="post" enctype="multipart/form-data">
<div class="g-recaptcha" data-sitekey="***"></div>
<input type="file" name="filename">
<input id="submit" name="submit" type="submit" value="Submit">
</form>
有人可以详细说明为什么会这样吗?
编辑4:过早发言
切换订单会使g-recaptcha-response&#39;出现在$ _POST中,但我仍然收到错误代码3:UPLOAD_ERR_PARTIAL。
编辑5
看起来文件正在正确上传,因为我可以在头参数(firefox调试器)中看到它。好像php只是没有正确地填充$ _FILE数组......
答案 0 :(得分:0)
我在不同的服务器上尝试了相同的代码并且工作正常。
看起来问题是我设置的服务器存在某种配置问题。 它实际上与reCAPTCHA和文件输入+ enctype的交互无关。
如果我弄清楚配置问题是什么,我会更新。