XHR/GM_xhr でバイナリ (\0 をふくむ) はできない……
\0 があるとそこでとめられてしまう……
無駄になったコードこぺ
function multipart(data) {
var ret = [], boundary = createBoundary();
for (var k in data) if (data.hasOwnProperty(k)) {
var list = data[k];
for (var i = 0; i < list.length; i++) {
var obj = list[i];
if (obj.filename) {
ret.push(
'--' + boundary,
'Content-Disposition: file; name="'+k+'"; filename="'+obj.filename+'"',
'Content-Type: '+obj.contentType,
'',
obj.content
);
} else {
obj = String(obj);
ret.push(
'--' + boundary,
'Content-Disposition: form-data; name="'+k+'"',
'',
obj
);
}
}
}
ret.push('--' + boundary + '--', '');
return {
contentType : "multipart/form-data; boundary=" + boundary,
data: ret.join("\r\n")
};
function createBoundary () {
return "B"+Math.floor(0x1000000 + Math.random() * 0xffffff).toString(16);
}
}