Як я можу встановити значення цього?
<input type="file" />
Як я можу встановити значення цього?
<input type="file" />
Відповіді:
Ви не можете з міркувань безпеки.
Уявіть собі:
<form name="foo" method="post" enctype="multipart/form-data">
<input type="file" value="c:/passwords.txt">
</form>
<script>document.foo.submit();</script>
Ви не хочете, щоб веб-сайти, які ви відвідуєте, змогли це зробити, чи не так? =)
Не відповідь на ваше запитання (на що відповіли інші), але якщо ви хочете мати певну функцію редагування завантаженого файлового поля, ви, ймовірно, хочете зробити це:
<input>
тег , щоб завантажити новий файл<input type="file" />
існуючий образ продукту? Я можу показати наявне зображення в <img />
тезі, але коли я не надсилаю файл, це проходить.
Як і всі інші тут заявили: Ви не можете завантажувати файл автоматично за допомогою JavaScript.
ЗАРАЗ! Якщо у вас є доступ до інформації, яку ви хочете надіслати у своєму коді (тобто не passwords.txt), ви можете завантажити його як тип blob , а потім розглядати його як файл.
Те, що побачить сервер, не відрізнятиметься від того, хто фактично встановив значення <input type="file" />
. Хитрість, зрештою, полягає в тому, щоб почати новий XMLHttpRequest () з сервером ...
function uploadFile (data) {
// define data and connections
var blob = new Blob([JSON.stringify(data)]);
var url = URL.createObjectURL(blob);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'myForm.php', true);
// define new form
var formData = new FormData();
formData.append('someUploadIdentifier', blob, 'someFileName.json');
// action after uploading happens
xhr.onload = function(e) {
console.log("File uploading completed!");
};
// do the uploading
console.log("File uploading started!");
xhr.send(formData);
}
// This data/text below is local to the JS script, so we are allowed to send it!
uploadFile({'hello!':'how are you?'});
Отже, для чого ви могли це використати? Я використовую його для завантаження елементів HTML5 полотна як jpg. Це економить користувачеві проблеми, коли потрібно відкрити file
input
елемент, лише вибрати локальне, кешоване зображення, яке вони просто змінили, змінили тощо. Але це повинно працювати для будь-якого типу файлів.
1) Проблема значення за замовчуванням у введенні файлів НЕ "зроблено з міркувань безпеки", але браузери "просто не реалізували його без поважних причин": див. Цей глибокий звіт
2) Простим рішенням може бути використання введення тексту поверх введення файлу, як тут . Звичайно, вам потрібен код, щоб надіслати файл, використовуючи тепер значення введення тексту, а не введення файлу.
У моєму випадку, якщо робити HTA-додаток, це не проблема, я взагалі не використовую форму.
Визначте в html:
<input type="hidden" name="image" id="image"/>
В JS:
ajax.jsonRpc("/consulta/dni", 'call', {'document_number': document_number})
.then(function (data) {
if (data.error){
...;
}
else {
$('#image').val(data.image);
}
})
Після:
<input type="hidden" name="image" id="image" value="/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."/>
<button type="submit">Submit</button>
Насправді ми можемо це зробити. ми можемо встановити значення файлу за замовчуванням за допомогою керування веб-браузером у c # за допомогою бібліотеки FormToMultipartPostData. Нам потрібно завантажити та включити цю бібліотеку до нашого проекту. Webbrowser дозволяє користувачеві переходити веб-сторінки всередині форми. Після завантаження веб-сторінки сценарій всередині webBrowser1_DocumentCompleted буде виконаний. Тому,
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
FormToMultipartPostData postData =
new FormToMultipartPostData(webBrowser1, form);
postData.SetFile("fileField", @"C:\windows\win.ini");
postData.Submit();
}
Нижче наведено посилання для завантаження та повної посилання.
https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com