Хотя я согласен с scebotari's answer, что в вашем случае вложения формы в панели инструментов, вероятно, является самым простым решением, ради ответа на оригинале вопрос:
Если вы действительно не можете или не хотите использовать форму, и вы не ограничены в отношении поддержки браузеров, посмотрите на FileReader.
Идея состоит в том, чтобы прочитать содержимое файла на стороне клиента (JavaScript), а затем отправить данные с использованием обычного запроса AJAX.
Ваш код может выглядеть так:
function (fileField) {
var file = fileField.fileInputEl.dom.files[0],
reader;
if (file === undefined || !(file instanceof File)) {
return;
}
reader = new FileReader();
reader.onloadend = function (event) {
var binaryString = '',
bytes = new Uint8Array(event.target.result),
length = bytes.byteLength,
i,
base64String;
// convert to binary string
for (i = 0; i < length; i++) {
binaryString += String.fromCharCode(bytes[i]);
}
// convert to base64
base64String = btoa(binaryString);
Ext.Ajax.request({
url: 'save-file.php',
method: 'POST',
params: {
data: base64String
}
});
};
reader.readAsArrayBuffer(file);
}
Может быть, вы ищете это: http://stackoverflow.com/a/34048251/1845533 – xdn