1

ファイルブラウザからファイルを選択する際にjquery-ajaxを使用して、jspからmysqlデータベースにファイルをアップロードするためのコードを作成しました。ファイルを選択すると、JavaScript はファイルと ID をパラメーターとしてアクション クラスに渡しますが、アクション クラスでファイルの null 値を取得しています。

誰でもこの問題を解決する方法を教えてください。

index.jsp

<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<script src="js/jquery-1.7.2.min.js"></script>
<script src="js/jquery-ui-1.8.21.custom.min.js"></script>
<script>
    function filebrowse(toolid){
        document.getElementById("toolidforimg").value=toolid;
        $("#filetochange").trigger('click');
        return false;
    }

    function changeFile(var3)
    {
       var param="filetochange="+(document.getElementById("filetochange").value)+"&toolidforimg="+document.getElementById("toolidforimg").value;
        var resultStringX = $.ajax({
        type: "POST",
        url:"getFileChange.action", 
        enctype: 'multipart/form-data',
        data: param,
        async: false
        }).responseText;
        resultStringX=$.trim(resultStringX);

     return false;  
    }
</script>
</head>
<body>
<s:hidden value="" name="toolidforimg" id="toolidforimg"/>
<a href="#" onclick="return filebrowse('1')" id="select_logo">Change File</a>
<input style="opacity:0;" type="file" onchange="changeFile(this.value)" id="filetochange" name="filetochange" >
</body>
</html>

struts.xml

<action name="getFileChange" class="com.MyactionClass" method="getFileChange">
     <result name="success">browseFiles.jsp</result>
</action>

MyactionClass.java

class MyactionClass
{
  File filetockhange;
  String toolidforimg;

  public File getFiletochange() {
        return filetochange;
    }

  public void setFiletochange(File filetochange) {
        this.filetochange = filetochange;
    }

   public String getToolidforimg() {
        return toolidforimg;
    }

   public void setToolidforimg(String toolidforimg) {
        this.toolidforimg = toolidforimg;
    }

   public String getFileChange()
   {
    HERE I AM GETTING filetochange VALUE AS NULL

    return SUCCESS;
   }
}
4

1 に答える 1

0

送信したいフィールド(ファイル、非表示など) の周りに HTML フォーム要素を配置します。

それで十分なはずです。

いくつかのヒント:

  • 常にDTD を指定しないと、 Quirks Modeの奇妙な世界に陥ってしまいます。<html>あなたの場合、HTML5でのみ AJAX を介してファイルをアップロードできるため、HTML5 DTD が適合するはずです。<!DOCTYPE html>
  • <s:form>、 、 など、可能な場合は常に HTML タグの代わりに Struts2 タグを使用し<s:file>てください<s:a>
  • アクセサー (ゲッター) のみが で始まる必要がありget、他のメソッドではなく、確実にアクション名ではありません。
于 2013-07-01T12:44:07.717 に答える