, FileList
salt okunur değiştirmek mümkün değilim
<input type="file" name="fileToUpload" id="fileToUpload" multiple/>
<script> $("#fileToUpload")[0].files[0] </script>
aşağıdaki gibi çalıştı. Ancak, bu dosyaları ayrı bir Array
'a iterek bunu yapabilirsiniz. Daha sonra, bu seçilmiş dosya listesinden istediğinizi yapabilirsiniz. Bunları bir sunucuya yüklüyorsanız, FileReader
API'sini kullanabilirsiniz.
FileList
'u değiştirmeye ihtiyaç duymaktan tamamen kaçınmanın bir yoludur. Adımlar:
- ayrı diziye istenen doğrulama için değiştirme olayı, filtreden her dosya aracılığıyla yerel dosyaları okumak için
- Kullanım
FileReader
API
- itin geçerli dosyaları, normal dosya giriş değiştirme olayı dinleyicisi
- Döngü ekle
- sunucuya
Olay handl için geçerli, işlenmiş dosyası gönder er ve temel dosya döngü kodu: Aşağıda
var validatedFiles = [];
$("#fileToUpload").on("change", function (event) {
var files = event.originalEvent.target.files;
files.forEach(function (file) {
if (file.name.matches(/something.txt/)) {
validatedFiles.push(file); // Simplest case
} else {
/* do something else */
}
});
});
tarayıcıda içine dosyasını yüklemek ve isteğe bağlı olarak bir Base64 olarak bir sunucuya göndermek için FileReader
API kullanabilirsiniz gösterir bu dosya döngü daha karmaşık bir versiyonudur kodlanmış blob.
files.forEach(function (file) {
if (file.name.matches(/something.txt/)) { // You could also do more complicated validation after processing the file client side
var reader = new FileReader();
// Setup listener
reader.onload = (function (processedFile) {
return function (e) {
var fileData = { name : processedFile.name, fileData : e.target.result };
// Submit individual file to server
$.post("/your/url/here", fileData);
// or add to list to submit as group later
validatedFiles.push(fileData);
};
})(file);
// Process file
reader.readAsDataURL(file);
} else {
/* still do something else */
}
});
FileReader
API kullanarak yaklaşık Uyarı notu. Bir dosya kodlayan Base64, boyutunu yaklaşık% 30 oranında artıracaktır. Bu kabul edilebilir değilse başka bir şey denemeniz gerekecektir.
Dosyalar ile ne yapacaksınız? kullanıcı bunları yükledikten sonra tmp klasörünüze kopyalanırlar ve bilgileri sahip olduğunuz dizide tutulur, böylece işlemeye gittiğinizde, sadece yanlış uzantılara sahip olanlar ... –
Çocuklar, bir dizi değil, "0", "1", "2" özniteliğine sahip bir nesne bu yüzden burada –
dizi işlemlerini gerçekleştiremiyorum Ne yazık ki, dosyaları yalnızca okunan gibi bir FileList içinde değiştiremezsiniz. Yeni bir FileList oluşturmak da imkansız. Sorununuz, giriş öğesinin 'kabuller' özelliği kullanılarak çözülebilir mi? FileList'ten TÜM dosyaları şu şekilde kaldırabilirsiniz: '$ (" # fileToUpload ") [0] .value = ''' –