arcgis server GP 處理大檔案的方法
阿新 • • 發佈:2018-11-07
問題
伺服器(arcgis server 10.2)釋出GP服務,但瀏覽器解析不了百兆以上的json大檔案,無法完成GP輸入。
解決辦法
允許GP服務的上傳 功能。把大檔案上傳到arcgis server上,用返回的itemid作為輸入值。
步驟
- 上傳大檔案
//先上傳,再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);
}
});
- 執行GP
let parms = {
parm1: datafile,
};
gp.submitJob(parms).then(gpJobComplete, gpJobFailed, gpJobStatus);
- 刪除檔案
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);
}
})
}