適当に数時間試していたら上手くいきました。
変数のlengthをcountして条件分岐で欲しい数だけsliceしてます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <script> function handleFileSelect(evt){ var files = evt.target.files; if (files.length > 2){ files = files.slice(0, 2); } for ( var i = 0, f; f = files[i]; i++) { // for (var i = 0, f; f = files[i]; i++) { if (!f.type.match( 'image.*' )) { continue ; } var reader = new FileReader(); reader.onload = ( function (theFile){ return function (e){ var span = document.createElement( 'span' ); span.innerHTML = [ '<img class="thumb" src="' , e.target.result, '" title="' , escape(theFile.name), '"/>' ].join( '' ); document.getElementById( 'list' ).insertBefore(span, null ); }; })(f); reader.readAsDataURL(f); } var output = []; for ( var i = 0, f; f = files[i]; i++) { // for (var i = 0, f; f = files[i]; i++) { output.push( '<li><strong>' , escape(f.name), '</strong> (' , f.type || 'n/a' , ') - ' , f.size, ' bytes, last modified: ' , f.lastModifiedDate.toLocaleDateString(), '</li>' ); } document.getElementById( 'list' ).innerHTML = '<ul>' + output.join( '' ) + '</ul>' ; } document.getElementById( 'files' ).addEventListener( 'change' , handleFileSelect, false ); </script> |
OK! Nice!
さて、問題は、送信ファイルをどうやって保存するかですね。
gmailやhotmailなどは、ファイル名は変わらずに送られてくるので、拡張子にバリデーションをかけて、ファイル名はそのままにしたいと思います。