2014-02-19 3 views
0

Я работаю с онлайн-приложением, у которого у меня нет доступа к источнику, но я могу вставить javascript на нем через iframe, потому что я могу создавать страницы в том же домене.Можно ли заменить файл с помощью Blob?

Это приложение имеет форму он отправляет для загрузки файлов, а входы файлов, подумайте:

<form> 
    <!-- lots and lots of inputs --> 
    <input type="file" name="blah"> 
</form> 

Я хотел бы использовать эту форму, чтобы представить яваскрипт Blob для этого конкретного файла вместо файла с диска , не нарушая остальную форму. Как мне это сделать?

+1

Вы можете использовать XHR2 (AJAX), чтобы сделать это, в частности, с FormData. – Musa

+0

используйте скрытый вход с данными файла base64, пользовательская обработка на сервере требуется. – dandavis

+0

Это похоже на то решение, на которое я надеялся, но у меня нет доступа к серверному коду. Я застрял в ужасной системе управления контентом. – user2867288

ответ

2

Это возможно с новыми свойствами XMLHttpRequest и FormData

Благодаря @musa за комментарий ;-)

Рассмотрим это (непроверенные) пример:

function sendFile() { 
    var content = "<hello>world</hello>"; // set here the content of your file 
    var blob = new Blob([content], { type: "text/xml"}); // set the type of content (eg: image/jpeg) 

    var formData = new FormData(); 
    formData.append('blah', blob); 

    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', '/server', true); 
    xhr.onload = function(e) { 
    alert ('successfully (or not) sent'); 
    }; 

    xhr.send(formData); 
} 

Дополнительная информация:

Примечание: FormData is not supported by IE9 (and less)

Это то же самое для Blob

+0

Я пробовал использовать FormData и эмулировать данные POST, что большой нечитаемый blob кода Dojo на странице, которую я изменяю, отправляет на сервер, но безрезультатно. Я надеялся просто изменить элемент html на странице и позволить Dojo-коду взять на себя и сделать свое дело. Если бы это был личный проект, у меня было все организованное и под моим контролем это было бы отличным решением. – user2867288

+0

Также спасибо за написание такого организованного сообщения. – user2867288

Смежные вопросы