2007年 12月 30日

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