• js跨域上传文件 iframe


    封装好的jq插件

      (function () {
          var iframe = '<iframe name="jqUploadIframe" style="display: none"></iframe>';
          function getSearchObjct(window) {
              var search;
              try {
                  search = window.location.search.substr(1);
              } catch (e) {
                  return null;
              }
              if (search == "") return "";
              var keyValue = search.split("&");
              var result = {};
              for (var i = 0; i < keyValue.length; i++) {
                  var onek = keyValue[i].split("=");
                  result[onek[0]] = decodeURI(onek[1]);
              }
              return result;
          }
          function getRootPath() {
              var curWwwPath = window.document.location.href;
              var pathName = window.document.location.pathname;
              var pos = curWwwPath.indexOf(pathName);
              var localhostPaht = curWwwPath.substring(0, pos);
              var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
              return (localhostPaht + projectName);
          }
          var methods = {
              //跨域上传
              crossDomain: function (op) {
                  this.attr("target", "jqUploadIframe");
                  var $iframe = $(iframe);
                  var val = "window.location.href='" + getRootPath() + "/jqUpload32495982348952?data=massage'";
                  this.append('<input type="hidden" class="jqUpload-localhostname" ' +
                          'name="uploadCall" value="' + val + '"/>');
                  $iframe[0].onload = function () {
                      var searchData = getSearchObjct(this.contentWindow);
                      if (searchData == "") {
                          return;
                      } else if (searchData == null) {
                          op.error();
                      } else if (typeof searchData == "object") {
                          op.success(searchData.data);
                      }
                      $iframe.remove();
                      $(".jqUpload-localhostname").remove();
                  }
                  this.append($iframe);
                  $(this).submit();
              }
          }
          $.fn.jqAjaxUpload = function (op) {
              methods.crossDomain.apply(this, [op])
          }
      })()

    前台调用

      //需要提交的表单
    var form = $("<form action='http://www.cnblogs.com/GoCircle/SaveUploadedFile' method='post' enctype='multipart/form-data'></form>"); form.append($("<input name='formFile' value='" + clearBase64 + "' />")); form.append($("<input name='filename' value='" + fileName + "' />")); form.append($("<input name='maintainID' value='" + maintainid + "' />")); $('#iframeArea').append(form);//必须要追加到当前html页中 $(form).jqAjaxUpload({ isCrossDomain: true, success: function (result) { }, error: function () { } })

    后台C#  mvc

       [AllowAnonymousAttribute]//允许所有请求
       [HttpPost]

       public ActionResult SaveUploadedFile(String formFile, String filename, String maintainID)
       {
    //这里必须为这种格式
    return Content("<script>" + Request["uploadCall"].Replace("massage", isSavedSuccessfully) + "</script>"); }
  • 相关阅读:
    python报错:【 AttributeError module 'time' has no attribute 'clock'】
    Python批量重命名脚本
    【Java】复制文件打印流改进版
    【Java】复制多级文件夹
    【CSS】仿京东锚点侧边栏效果
    【Java】复制单级文件夹
    【Java】序列化&反序列化
    冒泡排序与优化 如何实现最优时间复杂度为O(n)的冒泡排序
    NodeRED中连接Mysql数据库并实现增删改查的操作
    NodeRED中使用exec节点实现调用外部exe程序
  • 原文地址:https://www.cnblogs.com/GoCircle/p/7722335.html
Copyright © 2020-2023  润新知