Bunun değerini nasıl ayarlayabilirim?
<input type="file" />
Bunun değerini nasıl ayarlayabilirim?
<input type="file" />
Yanıtlar:
Güvenlik nedeniyle yapamazsınız.
Hayal etmek:
<form name="foo" method="post" enctype="multipart/form-data">
<input type="file" value="c:/passwords.txt">
</form>
<script>document.foo.submit();</script>
Ziyaret ettiğiniz web sitelerinin bunu yapabilmesini istemiyorsunuz, değil mi? =)
Sorunuza bir yanıt değil (diğerlerinin yanıtladığı), ancak yüklenen bir dosya alanının düzenleme işlevine sahip olmak istiyorsanız, muhtemelen yapmak istediğiniz şey şudur:
<input>
etiketi yeni bir dosya yüklemek için<input type="file" />
ürün resmini mevcut mu? Bir <img />
etikette mevcut resmi gösterebilirim ama gönderirken dosya geçmiyor.
Buradaki herkesin belirttiği gibi: Bir dosyayı JavaScript ile otomatik olarak yükleyemezsiniz.
ANCAK! Kodunuzda göndermek istediğiniz bilgilere erişiminiz varsa (ör. Passwords.txt değil), bunu bir blob tipi olarak yükleyebilir ve daha sonra dosya olarak değerlendirebilirsiniz.
Sunucunun neyi göreceğini, değerini ayarlayan birinden ayırt edilemez <input type="file" />
. Hile, sonuçta, sunucu ile yeni bir XMLHttpRequest () başlatmaktır ...
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?'});
Peki, bunu ne için kullanabilirsiniz? HTML5 tuval öğelerini jpg olarak yüklemek için kullanıyorum . Bu, kullanıcıyı file
input
yalnızca yeniden boyutlandırıldığı, değiştirildiği vb. Yerel, önbelleğe alınmış görüntüyü seçmek için bir öğeyi açma zorunluluğundan kurtarır . Ancak herhangi bir dosya türü için çalışması gerekir .
1) Bir dosya girişindeki varsayılan değer sorunu "güvenlik nedeniyle yapılmadı" DEĞİL, ancak tarayıcılar "bunu iyi bir nedenden ötürü uygulayamadı": bu derin rapora bakın
2) Basit bir çözüm, burada olduğu gibi dosya girişinin üstünde bir metin girişi kullanmak olabilir . Tabii ki, dosyayı göndermek için şimdi metin girişindeki değeri kullanarak dosyayı göndermek için bazı kodlara ihtiyacınız var.
Benim durumumda, HTA uygulaması yapmak, bu bir sorun değil, formu hiç kullanmıyorum.
HTML olarak tanımlayın:
<input type="hidden" name="image" id="image"/>
JS'de:
ajax.jsonRpc("/consulta/dni", 'call', {'document_number': document_number})
.then(function (data) {
if (data.error){
...;
}
else {
$('#image').val(data.image);
}
})
Sonra:
<input type="hidden" name="image" id="image" value="/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."/>
<button type="submit">Submit</button>
Aslında yapabiliriz. FormToMultipartPostData Library'yi kullanarak c # içindeki webbrowser denetimini kullanarak varsayılan dosya değerini ayarlayabiliriz. Bu Kütüphaneyi indirip projemize dahil etmeliyiz. Webbrowser, kullanıcının Web sayfalarında form içinde gezinmesini sağlar. Web sayfası yüklendikten sonra, webBrowser1_DocumentCompleted içindeki komut dosyası yürütülür. Yani,
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
FormToMultipartPostData postData =
new FormToMultipartPostData(webBrowser1, form);
postData.SetFile("fileField", @"C:\windows\win.ini");
postData.Submit();
}
İndirme ve tam referans için aşağıdaki bağlantıya bakın.
https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com