-
Creator 版本:
-
目标平台:pcweb应用
-
重现方式:一直不能上传成功
-
首个报错:后台一直收不到文件
-
之前哪个版本是正常的:
-
手机型号:
-
手机浏览器:
-
编辑器操作系统: windows 谷歌浏览器
-
重现概率: 100%
代码如下:
let that = this;
let inputEl:any = document.getElementById("file_input");
if (!inputEl) {
inputEl = document.createElement('input');
inputEl.id = 'file_input';
inputEl.setAttribute('id', 'file_input');
inputEl.setAttribute('type', 'file');
inputEl.setAttribute('accept','.cpp,.py,.txt,.sb3,.jpg,.png,.obj,.gcode');
inputEl.style.opacity = '0';
inputEl.style.position = 'absolute';
inputEl.setAttribute('left', '-999px');
inputEl.setAttribute("multiple",false);
document.body.appendChild(inputEl);
}
inputEl.onchange = (event) => {
let files = inputEl.files;
console.log(files);
if (files && files.length > 0) {
var file = files[0];
console.log(file.name);
let fromData = new FormData();
fromData.append('exam_file', file);
HttpUtil.POST(Basic.server+EventID.S2C_uploadExamFile,{paper_id:this.currExamId,exam_id:this.currstartExamId,question_no:this.currTiNum},(res,rdata)=>{
let sdata = JSON.parse(rdata);
console.log(rdata);
if(res&&sdata.code == 1)
{
}
},fromData);
}
}
网络发送类:
public static POST(url: string, param: object = {},callback: (result: boolean, data: any) => void,formData:FormData= null) {
// url = HttpUtil.baseUrl + url;
var xhr = new XMLHttpRequest();
let dataStr = ‘’;
Object.keys(param).forEach(key => {
if (Utils.isValidKey(key, param)) {
dataStr += key + '=' + encodeURIComponent(param[key]) + '&';
}
})
if (dataStr !== ‘’) {
dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'));
if(formData!=null)url = url + '?' + dataStr;
}
console.log(“post:”+url);
xhr.open(“POST”, url, true);
if(formData!=null)
{
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("enctype","multipart/form-data");
}else{
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
if(Basic.token.length>0)
{
xhr.setRequestHeader("token",Basic.token);
}
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
let response = xhr.responseText;
if (xhr.status >= 200 && xhr.status < 300) {
let httpStatus = xhr.statusText;
// callback(true, JSON.parse(response));
callback(true, response);
} else {
callback(false, response);
}
}
};
if(formData!=null)
{
xhr.send(formData);
}else
{
xhr.send(dataStr);
}
}
}
