Как добавить данные заголовка в XMLHttpRequest при использовании formdata?

Я пытаюсь реализовать API загрузки файлов, приведенный здесь:
Загрузка файла Mediafire

Я успешно загружаю данные Post и Get, но не знаю, как отправить атрибут x-filename, который предназначен для данных заголовка, как указано в руководстве API.

Мой код:

xmlhttp=new XMLHttpRequest();
var formData = new FormData();

formData.append("Filedata", document.getElementById("myFile").files[0]);

var photoId = getCookie("user");
// formData.append("x-filename", photoId);            //tried this but doesn't work
// xmlhttp.setRequestHeader("x-filename", photoId);   //tried this too (gives error) [edited after diodeous' answer]

xmlhttp.onreadystatechange=function()
{
    alert("xhr status : "+xmlhttp.readyState);
}

var url = "http://www.mediafire.com/api/upload/upload.php?"+"session_token="+getCookie("mSession")+"&action_on_duplicate=keep";

xmlhttp.open("POST", url);
// xmlhttp.setRequestHeader("x-filename", photoId);   //tried this too, doesnt work. Infact nothing gets uploaded on mediafire.  [edited after apsillers' answer]
// cant get response due to same origin policy
xmlhttp.send(formData);

Ответ 1

Ваша ошибка

InvalidStateError: Была сделана попытка использовать объект, который не используется или больше не используется

появляется, потому что вы вызываете setRequestHeader после вызова open. Просто переместите строку setRequestHeader ниже строки open (но до send):

xmlhttp.open("POST", url);
xmlhttp.setRequestHeader("x-filename", photoId);
xmlhttp.send(formData);

Ответ 2

Использование: xmlhttp.setRequestHeader(key, value);