jquery 如何中止取消文件阅读FileReader

cuxqih21  于 2024-01-07  发布在  jQuery
关注(0)|答案(3)|浏览(172)

我使用这个代码:

  1. document.getElementById("fileToUpload").onchange = function () {
  2. var reader = new FileReader();
  3. reader.onload = function (e) {
  4. // get loaded data and render thumbnail.
  5. $("#image").show();
  6. document.getElementById("image").src = e.target.result;
  7. };
  8. // read the image file as a data URL.
  9. reader.readAsDataURL(this.files[0]);
  10. };

字符串
如果用户按下取消按钮,所选文件将为空,所以我需要隐藏img
获得空目标结果或取消对话框所需的代码是什么?

kx7yvsdv

kx7yvsdv1#

使用
FileReader.abort()用于中止阅读大文件的过程
FileReader.onabort用于检测进程已中止(hide #image)
https://developer.mozilla.org/en/docs/Web/API/FileReader
在下面的示例中,abort()将由setTimeout合成触发,这只是为了演示。您可以使用按钮单击来触发abort(也在此示例中)

  1. const elFile = document.querySelector("#file");
  2. const elAbort = document.querySelector("#abort");
  3. const elImage = document.querySelector("#image");
  4. const reader = Object.assign(new FileReader(), {
  5. onabort() {
  6. console.log("Reading aborted!");
  7. elImage.classList.add("u-hidden"); // Hide image
  8. },
  9. onload(evt) {
  10. console.log("Reading complete!");
  11. elImage.src = evt.currentTarget.result;
  12. elImage.classList.remove("u-hidden"); // Show image
  13. },
  14. onerror: console.error
  15. });
  16. elFile.addEventListener("change", (evt) => {
  17. // Read the image file as a data URL.
  18. reader.readAsDataURL(evt.currentTarget.files[0]);
  19. // JUST FOR THIS DEMO! EMULATE ABORT AFTER 1ms. (Remove this later!)
  20. setTimeout(() => reader.abort(), 1);
  21. });
  22. // INSTEAD OF USING THE ABOVE 1ms setTimeout DEMO ABORT
  23. // LET THE USER MANUALLY ABORT FILE READING
  24. elAbort.addEventListener("click", () => {
  25. reader.abort(); // This is how you abort a file reading!
  26. });
  1. /* Utility classes */
  2. .u-hidden { display: none; }
  3. #image { max-height: 120px; }
  1. <input id="file" type="file" accept="image/*"><br>
  2. <button id="abort" type="button">ABORT READING</button><br>
  3. <img id="image" class="u-hidden" src="#!" alt="">
展开查看全部
iqxoj9l9

iqxoj9l92#

这里有另一个你可以尝试的选择:

  1. (function () {
  2. $("#fileToUpload").on('change', function () {
  3. var reader = new FileReader();
  4. reader.onload = function (e) {
  5. // get loaded data and render thumbnail.
  6. $("#image").css('display', '');
  7. $("#image").attr('src', e.target.result);
  8. };
  9. // read the image file as a data URL.
  10. reader.readAsDataURL(this.files[0]);
  11. });
  12. $('#btnUpload').on('click', function () {
  13. if (confirm('Are you sure you want to upload this Image?')) {
  14. // your upload code here
  15. } else { // user clicked the cancel button
  16. $("#fileToUpload").replaceWith($("#fileToUpload").clone());
  17. $("#image").css('display', 'none').attr('src', '');
  18. }
  19. });
  20. })();

字符串
参见示例jsfiddle:https://jsfiddle.net/fictus/dsgjtmfq/

展开查看全部
dl5txlt9

dl5txlt93#

你好,你可以参考这个Link here

JS

  1. // Add your javascript here
  2. $(function(){
  3. $('#blah').hide();
  4. function readURL(input) {
  5. if (input.files && input.files[0]) {
  6. var reader = new FileReader();
  7. reader.onload = function (e) {
  8. $('#blah').show();
  9. $('#blah').attr('src', e.target.result);
  10. }
  11. reader.readAsDataURL(input.files[0]);
  12. }
  13. }
  14. $("#imgInp").change(function(){
  15. $('#blah').hide();
  16. readURL(this);
  17. });
  18. });

字符串

超文本标记语言

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. <link rel="stylesheet" href="style.css" />
  7. <script data-require="jquery" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
  8. <script src="script.js"></script>
  9. </head>
  10. <body>
  11. <form id="form1" runat="server">
  12. <input type='file' id="imgInp" />
  13. <img id="blah" src="#" alt="your image" />
  14. </form>
  15. <!-- Put your html here! -->
  16. </body>
  17. </html>

展开查看全部

相关问题