javascript - איך להדביק קבצים לתוך שדה קלט באמצעות CTRL-V/הדבק?
האם יש דרך להדביק קבצים לשדה קלט?
בעיקרון אני רוצה להעתיק קובץ במחשב/באינטרנט וכאשר אני מניח את העכבר בתוך אזור הקלט, בעת ביצוע Ctrl-v (הדבקה) הקלט מזהה את הפקודה הזו. האם יש דרך לעשות זאת?
הדגמה
HTML
<div class="card bg-light mb-3" style="width:700px; height:300px">
<div class="card-header">Attachment</div>
<div class="card-body att">
<input type="file" id="files" multiple (change)="detectFiles($event)" accept="image/*">
<div class="grid-container">
<div *ngFor="let url of items">
<div class="grid-item">{{url.fileType}} {{url.filename}}</div><span class="delete" (click)="deleteImage(Imagens[0])"><img>x</span>
</div>
</div>
</div>
</div>
רכיב
detectFiles(event) {
var files = event.target.files;
for (let index = 0; index < files.length; index++) {
const item: any = {
filename: event.target.files[index].name.split('.')[0],
fileType: event.target.files[index].type.split("image/").join(""),
fileSize: event.target.files[index].size,
number: index
};
this.items.push(item);
this.filename = this.items[0].filename;
this.fileType = this.items[0].fileType;
this.fileSize = this.items[0].fileSize;
console.log(this.items)
const reader = new FileReader();
reader.onload = (e: any) => {
item.url = e.target.result;
}
reader.readAsDataURL(files[index]);
}
}
תשובה #1
אתה יכול להתחיל עם זה:
בדוגמה הזו, ניתן לבדוק על ידי העתקת תמונה כלשהי מהמחשב המקומי שלך, ואז הדבקה כאן באמצעות Ctrl + V (או Command + V במק).
window.addEventListener("paste", function(e){
var item = Array.from(e.clipboardData.items).find(x => /^image\//.test(x.type));
var blob = item.getAsFile();
var img = new Image();
img.onload = function(){
document.body.appendChild(this);
};
img.src = URL.createObjectURL(blob);
});<div>Click on the body and press Ctrl-V</div>הערה: ודא שאתה מעתיק תמונה, אני לא בודק את סוג הקובץ בדוגמה זו
