ajax提交file文件 在后台action中是Formfile 报错

java.lang.IllegalArgumentException: Cannot invoke com.msun.costAccount.form.BaseSalaryImpFrom.setUpfile - argument type mismatchfunction BaseSalaryImp(){
alert($("#date").val());
var date=$("#date").val();
alert($("#BaseSalaryImpupfile").val());
var upfile=$("#BaseSalaryImpupfile").val();
$.ajax({
type: "POST",
url: "${ctx}/BaseSalaryImpAction.do?type=import",
data:{"pojo.opdate":date,"pojo.upfile":upfile},
success: function(result){
if(result == 0){
alert("导入失败!");

}else if(result ==1){
alert("导入成功!");

        }
     }

    });

}

错误类型标明是参数非法,action中如何接受参数的呢?

$.ajax是不可以提交文件的,要使用插件
var options = {
url: url,
type : 'POST',
success: function (data) {
alert(data);
}
};
$("form").ajaxSubmit(options);
form表单中带着file

ajax不可以上传文件,建议使用jQuery插件ajaxFileUpload

使用jQuery插件ajaxFileUpload,百度一下即可。使用方式如下:

$.ajaxFileUpload
(
{
url: 'BillApply.aspx', //用于文件上传的服务器端请求地址
secureuri: false, //一般设置为false
fileElementId: ['fileAdd'], //文件上传空间的id属性
dataType: 'text', //返回值类型
data: {
mode: "uploadfile",
GameID: gameID,
IsNewGame: $("#isnewgame").attr("checked") ? 1 : 0
},
success: function (data, status) //服务器成功响应处理函数
{

                  var arr = new Array();
                  arr = data.split("#");

                  if (arr[0] == '0') {
                      $('#fileAdd').val("");
                      layer.alert(arr[1], { icon: 2, title: '错误' });
                      return false;
                  }
                  else if (arr[0] == '1') {
                      $("#gameserver").text(arr[2]);
                      return false;
                      //layer.alert(data.msg, { icon: 1, title: '成功' });
                  }
              },
              error: function (data, status, e)//服务器响应失败处理函数
              {
                  alert(e);
              }
          }
      )
},

直接用媒体标签提交也是可以的

ajaxSubmit

用这个库就可以上传文件了

你可以百度,有很多都能收到

uploadify插件

//前台

$(function() { $("#uploadify").uploadify({ 'swf' : "/uploadify/uploadify.swf", 'uploader' : "{:url('imports')}", 'buttonText' : '图片上传', 'buttonClass' : 'btn btn-success', 'fileTypeDesc' : 'Image Files', 'fileTypeExts' : '*.gif; *.jpg; *.png', 'fileObjName' : 'img', 'queueID' : 'fileQueue', 'onUploadSuccess' : function(file, data, response) { // alert(data); var src=data; var img="<img width='200px' height='100px' src='"+src+"'>"; $("#imgtext").attr('value',src); $("#img").html(img); }, }); $('#uploadify-button').removeAttr('style'); });
//后台

//uploadify 上传图片
public function imports(){
    $file = request()->file('img');
    $info = $file->move(ROOT_PATH . '/public/uploads');
    if($info){
      echo $info->getSaveName();

    }else{

      echo $file->getError();
    }


}

//前台

  <script>
     $(function() {
            $("#uploadify").uploadify({
                'swf'             : "/uploadify/uploadify.swf",  
                'uploader'        : "{:url('imports')}", 
                'buttonText'      : '图片上传', 
                'buttonClass'     : 'btn btn-success',
                'fileTypeDesc'    : 'Image Files',  
                'fileTypeExts'    : '*.gif; *.jpg; *.png',     
                'fileObjName'     : 'img',  
                'queueID'         : 'fileQueue',
                'onUploadSuccess' : function(file, data, response) {  
                   // alert(data);
                   var src="__PUBLIC__/uploads/"+data;
                   var img="<img width='200px' height='100px' src='"+src+"'>";
                   $("#imgtext").attr('value',src);
                   $("#img").html(img);
              }, 
            });
            $('#uploadify-button').removeAttr('style');
        });

    </script>

可以使用angular的文件上传插件
https://github.com/nervgh/angular-file-upload

可以使用ajax,不过要使用h5的一个formData类,不知道,你支不支持h5,你可以看看这个

看着这个对你有没有帮助
ajax异步批量上传文件

要么使用插件,要么使用假axaj刷新

上传文件: p>

<br> function doUpload() {<br><br> var formData = new FormData($( &quot;#uploadForm&quot; )[0]);<br><br> $.ajax({ <br> url:&#39;http://localhost:8080/test/file/&#39;+&quot;upload&quot;,<br> type: &#39;POST&#39;,<br><br> data: formData,<br><br> async: false,<br><br> cache: false,<br><br> contentType: false,<br> processData: false,<br><br> success: function (returndata) {<br><br> alert(returndata.data);<br> var fileUrl=returndata.data;<br> $(&quot;#fileUrl&quot;).attr(&quot;value&quot;,fileUrl);<br> var fileUrl2=fileUrl.replace(&quot;H:\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps&quot;,&quot;http://localhost:8080&quot;);<br> var temp = &quot;<img src='"+fileUrl2+"'>&quot;;<br> $(&quot;#text&quot;).append(temp); <br> },<br><br> error: function (returndata) {<br><br> alert(returndata);<br><br> }<br><br> });<br><br> }<br>

两种方式:1、使用from提交,注意from上要加上属性enctype="multipart/form-data"2、使用ajaxfileupload,可以参考http://blog.csdn.net/u013062329/article/details/78971874

ajax文件上传的话一般会使用ajaxUpload。如果不用的话,那么你需要定义一个dataParam来把文件扩充进去,参数传的是dataParam数组,
而不是data了,这个比较麻烦。建议你改成ajaxUpload的写法就行,楼上有正解的