J'utilise event.clipboardData
pour obtenir une image du presse-papiers, puis le télécharge sur le serveur, code:
var items = e.clipboardData.items;
for(var i=0;i<items.length;i++)
{
if(items[i].type.indexOf("image")!=-1)
{
var blob=items[i].getAsFile();
var data = new FormData();
data.append("ImageFileField",blob);
_post2("url...",data);
}
}
REMARQUE: _post2()
est une fonction utilisant XMLHttpRequest
pour effectuer des travaux de téléchargement.
Au-dessus du code fonctionne très bien, l'image du presse-papiers peut télécharger directement sur mon serveur.
MAIS j'ai trouvé un problème, le nom de fichier de téléchargement d'image sur le serveur est fixé comme "blob", puis-je modifier le nom de fichier avant de le télécharger sur le serveur?
Voici le détail des données de téléchargement:
Demande de charge utile
------ WebKitFormBoundaryW0NQVOkdrfkYGWV3
Contenu-Disposition: données de formulaire; name = "%% File.48257279001171c9.2c36671da7f1b6c9482575de002e1f14. $ Body.0.3D8"; filename = "blob"Type de contenu: image/png
------ WebKitFormBoundaryW0NQVOkdrfkYGWV3--
Selon FormData , vous devriez pouvoir ajouter un paramètre de nom de fichier à votre appel data.append()
comme suit:
data.append("ImageFileField", blob, "imageFilename.png");
si vous voulez modifier le nom du fichier dans le blob lui-même, ajoutez simplement une clé appelée "nom"
blob.name = "imageFilename.png"
Après cela, vos fonctions JS devraient pouvoir le détecter. J'utilise jQuery File Upload et cela fonctionne avec.
j'ai rencontré le même problème que lors du téléchargement, le nom du fichier n'est pas un attribut multipart avec un objet blob mais après beaucoup de google et RND. Je trouve simple et la meilleure approche pour ce problème.
let file = event.target.files[0];
this.fileName = file.name; // Like : abc.jpeg
this.croppedImage = file //blob object after cropping
const formData = new FormData();
formData.append('file',this.croppedImageSend,this.fileName);
this.http.post(url, formData, headersOptions)