cocos中使用XMLHttpRequest支持 formdata 类型的表格上传吗?如果不支持,一般如何上传图片或者音频呢?
可以,自己模拟格式
请问有相关案例可以参考一下吗?
//这是一个简单的板栗 //var formData = new TestFormData(); //formData.append('accountId', '123'); //var xhr = cc.loader.getXMLHttpRequest(); //xhr.timeout = 3000; //xhr.open('POST', 'http://xxxxxx', true); //记得在头部带上boundary,这里注意一定要和类里面的 _boundary_key 保持一致 //xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=testformdata'); //xhr.onload = function (e) { // if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) { // console.log("xhr.responseText::", xhr.responseText) // } //}; //// ArrayBuffer //xhr.send(formData.arrayBuffer); export class TestFormData { private _boundary_key: string = 'testformdata'; private _boundary: string; private _end_boundary: string; private _result: string; constructor() { this._boundary = '--' + this._boundary_key; this._end_boundary = this._boundary + '--'; this._result = ""; } public append(key: string, value: string,filename?:string) { this._result += this._boundary + '\r\n'; if (filename){ this._result += 'Content-Disposition: form-data; name="' + key + '"' + '; filename="'+ filename + '"'+'\r\n\r\n'; }else{ this._result += 'Content-Disposition: form-data; name="' + key + '"' + '\r\n\r\n'; } this._result += value + '\r\n'; } public get arrayBuffer(): ArrayBuffer { this._result += '\r\n' + this._end_boundary; let charArr: Array<any> = []; for (var i = 0; i < this._result.length; i++) { // 取出文本的charCode(10进制) charArr.push(this._result.charCodeAt(i)); } let array: Uint8Array = new Uint8Array(charArr); return array.buffer; } }
2赞
base64
非常感谢,实测可以使用,结帖
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。