表单有上传图片,怎么向后端传递参数

342 阅读1分钟

image.png

表单里的输入框,我先将他们用一个form包围起来,然后放在一个data里,在url里进行传递。 表单里还有个图片上传,后端需要的是二进制参数,formdata

image.png 后端所需要的

image.png

我就按照自己的想法写了一下,从网上搜如何把file转化为pinary

var file = $("#logo").get(0).files[0];
                var fileSize = file.size,
                  fileType = file.type;
                if (file.name.lastIndexOf(".") == -1) {
                  layer.msg("路径不正确");
                  return false;
                }
                var AllImgExt = ".jpg|.jpeg|.gif|.bmp|.png|.swf|";
                var extName = file.name
                  .substring(file.name.lastIndexOf("."))
                  .toLowerCase();
                if (AllImgExt.indexOf(extName + "|") == -1) {
                  layer.msg("非法图片格式");
                  return false;
                }
                if (fileSize < 3145728) {
                  if (window.FileReader) {
                    var reader = new FileReader();
                    reader.readAsBinaryString(file);
                    reader.onload = function (e) {
                      var formData = new FormData();
                      formData.append("logo", file);

在Ajax里进行请求时,我却难住了,因为不知道content-type该怎么写,按照网上搜的写,却一直报 415的错误

image.png

我的Ajax是这么写

$.ajax({
                        url: "/oms-web/users?token=" + token + "&" + other_data, //后台地址
                        type: "post",
                        data: formData,
                        contentType:
                          "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", //格式转换为binary
                        
                        processData: false, // 使数据不做处理
                        contentType: false,
                        dataType: "json",
                        success: function (data) {
                          console.log(data);
                          if (data.code == -1) {
                            // window.location = '../login-1.html'
                          }
                          if (data.code == 0) {
                            layer.msg(
                              "创建成功",
                              { icon: 1, time: 100 },
                              function () {
                                parent.layer.close(iframeIndex);
                                window.parent.location.reload(); //修改成功后刷新父界面
                              }
                            );
                          } else {
                            layer.msg(data.msg, { icon: 2 }, function () {
                              // parent.layer.close(iframeIndex);
                            });
                          }
                        },

                        error: function () {
                          layer.msg("数据出错!");
                        },
                      });

大家能帮帮我解决一下吗?谢谢大家