上传文件到php服务器不行?是新版本的问题吗?急急急

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

}

}

}

官方回答下,cocos creater 3.8.2最新版本

你先搞个纯web页面试试

试过了,后台的接口页面可以上传

微信图片_20240325162404

这是接口测试的返回,正常

post 之前 延时一下试试

已经解决了。原来是 formdata格式里的boundary 不统一。