Comment lire fichier image à l'aide de la plaine du javascript?

Je suis nouveau sur le javascript et je suis actuellement en avoir un problème avec l'un de mes projets qui comprend l'affichage d'une image à partir du dossier racine du site web. Voici mon code actuel:

var reader = new FileReader();

    reader.onload = function(event){
           var dataUri = event.target.result,
               img = document.createElement("img");

               img.src =  dataUri;
               document.body.appendChild(img);
    };

    reader.onerror = function(event){
           console.log("File could not be read: " + event.target.error.code);
    };

reader.readAsDataURL("/uploads/extras/item_a/image1.png");

C'est mon code et il ne montre rien. Et dans ma console il me donne une erreur ou Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.

  • N'importe quoi montrer dans la console?
  • GET data: net::ERR_INVALID_URL @NewToJS
  • Essayez /uploads/extras/item_a/image1.png ? Quelle est votre structure de dossier comme?
  • La console d'erreur est de dire que reader n'est pas heureux avec le url. Essayez de codage en dur le chemin d'accès complet vers le fichier que j'ai.e http://example.com/uploads/extras/item_a/image1.png pour écarter d'autres problèmes.
  • J'ai eu Failed to load resource: net::ERR_INVALID_URL @0019
  • L'erreur est très spécifique. nouveau Fichier a besoin d'au moins 2 arguments. Découvrez ce thread stackoverflow.com/questions/8390855/...
  • Qu'est-ce que newFile fonction ? Aussi, je soupçonne fortement cette fonction fonctionne de manière asynchrone, ce qui signifie que myfile sera pas défini, ou au moins pas le fichier que tu voulais. Enfin, si ce newFile ne retourner est un Fichier objet, ou un blob, utilisez URL.createObjectURL(myfile) au lieu d'un FileReader.
  • Je ne sais pas. Ce que si je supprime le var myfile? Que vais-je mettre dans mon reader.readAsDataURL(?);
  • Vous ne nous montrez pas ce qu'est cette newFile fonction donc on ne peut pas savoir ce qu'il attend, ni de quoi il en retourne. (si, pour quelque raison que ce soit, c'était une faute de frappe et que vous vouliez dire le new File() constructeur, il est alors absolument pas comment ça fonctionne, puisque ce conctructor besoins d'un objet Blob comme premier paramètre et éventuellement un nom de chaîne, comme le deuxième, mais jamais d'une url. Et vous n'avez même pas besoin de créer un Fichier objet, puisque ce que vous pouvez faire avec un Fichier qui peut être fait avec une Goutte directement)
  • J'ai essayé d'enlever la var myfile = newFile([""],"uploads/extras/item_a/image1.png"); et ajouter reader.readAsDataURL("uploads/extras/item_a/image1.png"); et il me donne un message d' : Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.
  • Oui, parce que ni FileReader, ni new File ne récupérer des données que ce soit. Donc si vous êtes ok avec ES6 (uniquement les nouveaux navigateurs), vous pouvez en quelque sorte d'obtenir ce que vous voulez avec fetch("uploads/extras/item_a/image1.png").then(r=>r.blob()).then(blob=>{let img = new Image(); img.src = URL.createObjectURL(blob); document.body.appendChild(img)}). Pour es5 façon, vous auriez à utiliser une XHR. Aussi, puisque vous ne nous montrez pas ce que vous voulez faire avec le fichier, il est vraiment difficile de comprendre pourquoi vous ne pouvez pas tout img.src = "uploads/extras/item_a/image1.png".