通过前端上传图片等文件的方法

 <script type="text/javascript">
 
 ##先禁止form表自动提交
 $('form').submit(function () {
   return false
 })
 
 ##点击提交
 $('#add_it').click(function(){
     var formData = new FormData($("form")[0]); //创建一个formData对象,我这里是先把form表里数据 $('form')[0]放进去了,因为有图片文件,不能通过append追加进去
 
     // formData.append();
     var spec_str = JSON.stringify(spec); //对象转化为json字符串
     var note_str = JSON.stringify(note); //对象转化为json字符串
    
     ## 下面这些就是可以通过append 追加除了form外的数据进去,这样PHP后台接收的时候除了上传文件用$_FILES接收, 其他都可以用$_POST接收到(post方式)
     formData.append('spec',spec_str); 
     formData.append('note',note_str);
     formData.append('cid',cid);
     formData.append('gid',gid);
     formData.append('menu_id',menu_id);
    
     ##这里要用ajax方法 
     $.ajax({
         url: '/shopmenu/edit_goods',
         type: 'POST',
         // data: new FormData($("form")[0]),
         data: formData,
         cache: false, #必须
         processData: false, #必须
         contentType: false, #必须
         dataType: 'json',
         success: function (data) {
             // var data = $.parseJSON(data);
             // console.log(data);return;
             if(data.result){
                 layer.alert(data.msg, {icon: 6}, function(){
                     parent.location.reload();
                     ##下面是layui框架写法的刷新,不必理会
                     var index = parent.layer.getFrameIndex(window.name);
                     //关闭当前frame
                     parent.layer.close(index);
                     return;
                 });
             }else{
                 layer.msg(data.msg, {icon: 2, time:3000});return;
             }   
         }
     });
 });
 </script>        

 

## 上面前端写好后,PHP后端就可以接收到这些信息

 $_FILES ##因为是通过form表单上传的,所以都是通过input中的name名字来获取值
 ##例如:$_FILES['goods_img']
 
 #判断是否有文件上传
 if (!empty($_FILES['goods_img']) && $_FILES['goods_img']['error'] == 0) {
     echo "有文件上传,所以error为0且不为空”;
 }else{
     echo "无文件上传";    
 } 
 
 ##另外通过post方式传过来的都可以用 $_POST 方法接收到了

 

posted @ 2018-07-31 15:34  一粒小米-博客  阅读(985)  评论(0编辑  收藏  举报