问题
服务器(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);
}
})
}