只是实现了文本形式的转换,就当作是提供一种思路,抛砖引玉。
TestFormData.zip (957 字节)
Mark
有没有js版本的
let CCFormData = cc.Class({
extends:Object,
name:“CCFormData”,
ctor(){
let _boundary_key = arguments[0];
this._boundary = ‘–’+_boundary_key;
this._end_boundary = this._boundary+’–\r\n’;
this._result = [];
},
properties:{
_boundary_key:null,
_boundary:null,
_end_boundary:null,
_result:null,
boundary_key:{
get(){
return this._boundary_key;
}
},
boundary:{
get(){
return this._boundary;
}
},
end_boundary:{
get(){
return this._end_boundary;
},
},
result:{
get(){
return this._result;
},
},
},
append(key,val){
this._result.push(this._boundary + '\r\n');
this._result.push('Content-Disposition: form-data; name="' + key + '"' + '\r\n\r\n');
this._result.push(val);
this._result.push('\r\n');
},
appendFile(name,data,ext){
let type = "application/x-www-form-urlencoded";
let filename = "upload."+ext;
this._result.push(`${this._boundary}\r\n`);
this._result.push(`Content-Disposition: form-data; name="${name}"; filename="${filename}"\r\n`);
this._result.push(`Content-Type: ${type}\r\n`);
this._result.push("\r\n");
this._result.push(data);
this._result.push("\r\n");
},
getArrayBuffer(){
this._result.push('\r\n' + this._end_boundary);
let charArr = [];
for (let i = 0; i < this._result.length; i++) { // 取出文本的charCode(10进制
let item = this._result[i];
if( typeof(item)=='string'){
for (let s = 0; s < item.length; s++){
charArr.push(item.charCodeAt(s));
}
}else{
for (let j = 0; j < item.length; j++){
charArr.push(item[j]);
}
}
}
let array = new Uint8Array(charArr);
return array.buffer;
},
getStrBuffer(){
this._result.push('\r\n' + this._end_boundary);
let charArr = "";
for (let i = 0; i < this._result.length; i++) { // 取出文本的charCode(10进制
let item = this._result[i];
charArr = charArr+ item;
}
return charArr;
},
})
module.exports = CCFormData;
js版,我写的,测试通过
请问要append 图片档案要怎么改?
用原生吧,很多封装好的可以直接用
原生要写两套,但感觉就剩最后一步了
在 public get arrayBuffer(): ArrayBuffer
charArr.push(this._result.charCodeAt(i)); 如果是字串类型可以
但档案要怎么用,有大神可以协助一下吗