arcgis server GP 处理大文件的方法

问题

服务器(arcgis server 10.2)发布GP服务,但浏览器解析不了百兆以上的json大文件,无法完成GP输入。

解决办法

允许GP服务的上传 功能。把大文件上传到arcgis server上,用返回的itemid作为输入值。

步骤

  1. 上传大文件
            //先上传,再GP处理
           let formData_1 = new FormData();
           formData_1.append('file', $('#mInput')[0].files[0]);
           formData_1.append('description', "待处理");
           formData_1.append('f', 'json');

           $.ajax({
               url: gpUploadURL,
               type: 'POST',
               async: true,
               cache: false,
               data: formData_1,
               processData: false,//必须
               contentType: false,//必须

               success: (response) => {

                   let itemID = JSON.parse(response).item.itemID;
                   
                   let datafile = new DataFile();
                   datafile.itemId = itemID;

                  //执行GP
               },
               error: (response) => {
                   let rData = JSON.stringify(response);
                   console.log("upload错误!" + rData);
               }
           });
  1. 执行GP
                   let parms = {
                       parm1: datafile,
                   };
                   
                  gp.submitJob(parms).then(gpJobComplete, gpJobFailed, gpJobStatus);
  1. 删除文件
function deleteUploadItem(itemUrl,token) {

    $.ajax({
        url: itemUrl,
        type: 'POST',
        data: {
            'f':'json',
            'token':token
        },
        xhrFields:{
            withCredentials:false
        },
        crossDomain:true,
        success: (response) => {
            let response_json=JSON.parse(response);
            if (response_json.status==="success")
                console.log("delete成功!");
        },
        error: (response) => {
            let rData = JSON.stringify(response);
            console.log("delete错误!" + rData);
        }
    })
}

//获取token
function OpWithToken(urlDel, Opurl) {

    let data={
        'username':'',
        'password':'',
        'client':'referer',
        'referer':window.location.href,
        'ip':'',
        'expiration':10,
        'f':'json'
    };

    $.ajax({
        url:url,
        type:'POST',
        data:data,
        xhrFields:{
            withCredentials:false
        },
        crossDomain:true,
        success: (response) => {
            let json=$.parseJSON(response);
            deleteUploadItem(urlDel,json.token)
        },
        error: (response) => {
            let error = JSON.stringify(response);
            console.log("token错误!" + error);
        }
    })
}

猜你喜欢

转载自blog.csdn.net/jacobzhuo/article/details/83650939