【问题标题】:upload a file along with some data in struts上传文件以及struts中的一些数据
【发布时间】:2016-12-31 17:50:49
【问题描述】:

我想通过struts表单上传一个图像文件和一些数据,处理数据,并将该图像存储在数据库中

我已经为它创建了一个表单,在 struts.xml 文件中定义了上传文件的操作,但是当控件进入 java 方法时,在文件类型变量中获取 null,请帮忙。

struts.xml 中的代码:

    <action name="uploadFile" class="org.ui.LogActivityAction"
        method="uploadFile">
        <interceptor-ref name="fileUpload">  
            <param name="fileUpload.maximumSize">10485760</param>
            <param name="fileUpload.allowedTypes">text/plain,image/jpg</param>
        </interceptor-ref>
        <interceptor-ref name="defaultStack"/>
        <result name="success">/user/activity/upload-card.jsp</result>
        <result name="error">/user/activity/upload-card.jsp</result>
    </action>

ajax 用于将数据发送到操作:

 function saveSalesUserActivity(card) {
     var isValidForm = jQuery('#dailyActivity').valid();
     isValidForm = jQuery('#dailyActivity').valid();
     if (!isValidForm) {
         return;
     }
     if (isValidForm) {
         jQuery.blockUI({
             message: "<strong>" + messages("mis.common.wait") + "</strong>"
         });
         jQuery.ajax({
             type: "POST",
             url: "/sales/user/logactivity/saveactivity.action?businessCard=" + card,
             data: jQuery('#dailyActivity').serialize(),
             success: function(response) {
                 jQuery("#miscontent").html(response);
             },
             error: function(response) {
                 jQuery("#miscontent").html(response);
             }
         });
         jQuery.unblockUI();
     }
     jQuery.unblockUI();
 }

通过这个在java方法中,我没有得到文件类型变量的值(这里使用'businessCard').. 任何人都可以帮助..

【问题讨论】:

  • struts中的一些数据放入输入框。

标签: file upload struts2


【解决方案1】:

如果你使用jQuery('#dailyActivity').serialize()
它不适用于&lt;input type'file'&gt;
看看这个jsFiddle 不起作用

还有这个.serialize()

文件选择元素中的数据未序列化。

要发送&lt;input type'file'&gt;,您可以试试这个

var formData = new FormData($('form')[0]);

看看这个https://stackoverflow.com/a/8758614/3425489

【讨论】:

    【解决方案2】:

    要使用 jQuery 上传文件,您必须使用 formdata

    文件上传的工作代码如下

    $(document).on('click', '#upload', function(e) {
              e.preventDefault();
          var fd = new FormData();
          var file = $('#my_file')[0].files[0];
          fd.append('file', file);
          fd.append('userId', $('#userid').val());
          console.log("hi");
          $.ajax({
              url: 'UploadPic',
              data: fd,
              type: "POST",
              contentType: false,
              processData: false,
              success: function(dd) {
                alert("sucessfully Uploaded")
                }
              });
          });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="file" id="my_file">
    <input type="hidden" id="userid" />
    <input type="button" id="upload" value="Upload" />

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      相关资源
      最近更新 更多