私はGoogleのキャプチャコードを使用しましたが、うまく機能します。form
にもenctypeはありません。form
同じ要素内に画像をアップロードしたかったのです。次に、enctype="multipart/form-data"
フォームの属性にが追加されました。次の問題に直面し、JSPサーブレットを使用しています。
1.1。
String challenge = request.getParameter("recaptcha_challenge_field");
String uresponse = request.getParameter("recaptcha_response_field");
ここで、challengeとuresponseはnull値を与えたため、
ReCaptchaResponse reCaptchaResponse = reCaptcha.checkAnswer(remote, challenge, uresponse);
nullポインタ例外を与えました。
編集:後で、enctype="multipart/form-data
inタグを使用すると、サーブレットのform
ようにパラメータとその値を取得できないことがわかりました。request.getParameter('')
2.FileItem
次に、次 のよう にして、上記のパラメーター(チャレンジとuresponse)の値を取得しようとしました。
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
String name = item.getFieldName();
System.out.println("name: " + name);
String value = item.getString();
System.out.println("value: " + value); // closing scopes ....
これらの出力では、「recaptcha_challenge_field」および「recaptcha_response_field」の出力結果は得られませんでした。ただし、HTMLinput
要素の他のパラメーターと値は使用可能です。私が観察したのは、フォームenctypeが削除されると、サーブレットはそれらのパラメーター('recaptcha_challenge_field'および'recaptcha_response_field')とその値を持つことができるということです。フォームのenctypeのみが追加された場合、サーブレットで使用できないパラメーター(request.getParameter('recapthaチャレンジパラメーターまたはrecaptha-response-fieldパラメーター'))。
編集ブラウザがそれらのパラメータ(recaptha-challenge ane recaptha-response-field。)をそれらの値とともに送信するかどうかを確認し、ブラウザがすべてのパラメータを適切に送信することを確認しました。問題はサーブレットにあり、内部のパラメータと値を取得している可能性がありますFileItem
このGoogleキャプチャコードを使用して画像をアップロードしたい(人間による検証用)。私の現在の実装は機能しません。誰かがこれを実装する方法を教えてくれますか?