Из-за ошибки Flex, загружающей файлы в защищенной среде , я пытаюсь найти обходной путь для этого в javascript.
Для этого я пытаюсьсоздайте скрытую форму в javascript, к которой я прикреплю файл и некоторые метаданные xml, а затем отправлю их на сервер в виде составного сообщения.Моя первая мысль - заставить это работать в HTML, а затем перенести этот код javascript в мой проект Flex.
Моя первая проблема - присоединение файла к скрытой форме в javascript.Я делаю что-то не так здесь.Я не очень разбираюсь в javascript, поэтому, если есть лучший способ сделать это, я очень хочу выучить.
Вот код, с которым я сейчас играю.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>hidden form post demo</title>
</head>
<body>
<script>
//helper function to create the form
function getNewSubmitForm(){
var submitForm = document.createElement("FORM");
document.body.appendChild(submitForm);
submitForm.method = "POST";
submitForm.enctype = "multipart/form-data";
return submitForm;
}
//helper function to add elements to the form
function createNewFormElement(inputForm, inputType, elementName, elementValue) {
var inputElement = document.createElement("INPUT");
inputElement.name = elementName;
inputElement.type = inputType;
try {
inputElement.value = elementValue;
} catch(err) {
alert(err.description);
}
inputForm.appendChild(inputElement);
return inputElement;
}
//function that creates the form, adds some elements
//and then submits it
function createFormAndSubmit(){
var submitForm = getNewSubmitForm();
var selectedFileElement = document.getElementById("selectedFile");
var selectedFile = selectedFileElement.files[0];
createNewFormElement(submitForm, "HIDDEN", "xml", "my xml");
createNewFormElement(submitForm, "FILE", "selectedFile", selectedFile);
submitForm.action= "my url";
submitForm.submit();
}
</script>
<div id="docList">
<h2>Documentation List</h2>
<ul id="docs"></ul>
</div>
<input type="file" value="Click to create select file" id="selectedFile"/>
<input type="button" value="Click to create form and submit" onclick="createFormAndSubmit()"/>
</body>
</html>
Вывидите, у меня есть блок try / catch в createNewFormElement
.Там создается исключение, но в сообщении говорится «undefined».
В FireBug я вижу, что elementValue
установлен для объекта File, поэтому я не совсем уверен, что происходит.