Ce code devrait fonctionner dans IE (ne le testez même pas dans Firefox), mais cela ne fonctionne pas. Ce que je veux, c'est afficher le nom du fichier joint. De l'aide?
<html>
<head>
<title>example</title>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript">
$(document).ready( function(){
$("#attach").after("<input id='fakeAttach' type='button' value='attach a file' />");
$("#fakeAttach").click(function() {
$("#attach").click();
$("#maxSize").after("<div id='temporary'><span id='attachedFile'></span><input id='remove' type='button' value='remove' /></div>");
$('#attach').change(function(){
$("#fakeAttach").attr("disabled","disabled");
$("#attachedFile").html($(this).val());
});
$("#remove").click(function(e){
e.preventDefault();
$("#attach").replaceWith($("#attach").clone());
$("#fakeAttach").attr("disabled","");
$("#temporary").remove();
});
})
});
</script>
</head>
<body>
<input id="attach" type="file" /><span id="maxSize">(less than 1MB)</span>
</body>
</html>
C'est aussi simple que d'écrire:
$('input[type=file]').val()
Quoi qu'il en soit, je suggère d'utiliser l'attribut name ou ID pour sélectionner votre entrée. Et avec event, ça devrait ressembler à ça:
$('input[type=file]').change(function(e){
$in=$(this);
$in.next().html($in.val());
});
$('input[type=file]').change(function(e){
$(this).parents('.parent-selector').find('.element-to-paste-filename').text(e.target.files[0].name);
});
Ce code ne montrera pas C:\fakepath\
Avant le nom de fichier dans Google Chrome en cas d'utilisation de .val()
.
Le moyen le plus simple est simplement d’utiliser la ligne suivante de jquery
, en utilisant ceci vous n’obtenez pas le /fakepath
nonsense, vous obtenez directement le fichier qui a été téléchargé:
$('input[type=file]')[0].files[0]; // This gets the file
$('#idOfFileUpload')[0].files[0]; // This gets the file with the specified id
Quelques autres commandes utiles sont:
Pour obtenir le nom du fichier:
$('input[type=file]')[0].files[0].name; // This gets the file name
Pour obtenir le type du fichier:
Si je devais télécharger un fichier PNG, il retournerait image/png
$("#imgUpload")[0].files[0].type
Pour obtenir la taille (en octets) du fichier:
$("#imgUpload")[0].files[0].size
De plus, vous n'avez pas à utiliser ces commandes on('change'
, vous pouvez obtenir les valeurs à tout moment, par exemple vous pouvez télécharger un fichier et lorsque l'utilisateur clique sur upload
, vous utilisez simplement les commandes que j'ai énumérées.
<input onchange="readURL(this);" type="file" name="userfile" />
<img src="" id="blah"/>
<script>
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#blah')
.attr('src', e.target.result)
.width(150).height(200);
};
reader.readAsDataURL(input.files[0]);
//console.log(reader);
//alert(reader.readAsDataURL(input.files[0]));
}
}
</script>
J'avais utilisé la suite qui fonctionnait correctement.
$('#fileAttached').attr('value', $('#attachment').val())
//get file input
var $el = $('input[type=file]');
//set the next siblings (the span) text to the input value
$el.next().text( $el.val() );
Ajoutez un bouton de réinitialisation masqué:
<input id="Reset1" type="reset" value="reset" class="hidden" />
Cliquez sur le bouton de réinitialisation pour effacer l'entrée.
$("#Reset1").click();