Safari, Chrome을 위한 HTML5 호환성 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7901 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
taggon 2010-11-25 05:11:27 +00:00
parent 6cf633ea4f
commit 3b955443ee

View file

@ -350,26 +350,36 @@ runtimes.html5 = {
(function uploadNext() { (function uploadNext() {
var file = files.shift(); var file = files.shift();
var req = uploader.request = new XMLHttpRequest(); var req = uploader.request = new XMLHttpRequest();
var data = '';
var bndr = '--------------xe-boundary'+random(); var bndr = '--------------xe-boundary'+random();
var bin = file.object.getAsBinary(); var compatFF, data, bin, gap = 0;
var gap = 0;
// Firefox compatible mode
compatFF = typeof(file.object.getAsBinary) == 'function';
if (compatFF) {
data = '';
$.each(settings.params, function(key, val) {
data += '--'+bndr+'\r\n';
data += 'Content-Disposition: form-data; name="'+key+'"\r\n\r\n';
data += val+'\r\n';
});
$.each(settings.params, function(key, val) {
data += '--'+bndr+'\r\n'; data += '--'+bndr+'\r\n';
data += 'Content-Disposition: form-data; name="'+key+'"\r\n\r\n'; data += 'Content-Disposition: form-data; name="Filedata"; filename="'+file.name+'"\r\n';
data += val+'\r\n'; data += 'Content-Type: application/octet-stream\r\n\r\n';
}); data += bin;
data += '\r\n';
data += '--'+bndr+'--\r\n';
data += '--'+bndr+'\r\n'; bin = null;
data += 'Content-Disposition: form-data; name="Filedata"; filename="'+file.name+'"\r\n'; gap = data.length - file.object.fileSize;
data += 'Content-Type: application/octet-stream\r\n\r\n'; } else {
data += bin; data = new FormData();
data += '\r\n'; $.each(settings.params, function(key, val) {
data += '--'+bndr+'--\r\n'; data.append(key, val);
});
bin = null; data.append('Filedata', file.object);
gap = data.length - file.object.fileSize; }
uploader.cast('ON_STARTONE', [file]); uploader.cast('ON_STARTONE', [file]);
@ -417,10 +427,12 @@ runtimes.html5 = {
} }
req.open('POST', settings.url); req.open('POST', settings.url);
req.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+bndr); if (compatFF) {
req.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+bndr);
if (req.sendAsBinary) req.sendAsBinary(data); req.sendAsBinary(data);
else req.send(data); } else {
req.send(data);
}
})(); })();
}, },
stop : function(uploader, settings) { stop : function(uploader, settings) {