1. 程式人生 > >arcgis server GP 處理大檔案的方法

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);
        }
    })
}