اذهب إلى المحتوى

السؤال

نشر

لاحظت في بعض المواقع تسمح للمستخدم بسحب الملف إلى الموقع وإفلاته في صندوق معين لرفعه بدلًا من الضغط على زر Upload على سبيل المثال وفتح نافذة منفصلة لإختيار الملف يدويًا

كيف يتم هذا الأمر من خلال جافاسكريبت؟ وهل توجد مكتبات تقوم بعمل مثل هذه الفكرة؟

Recommended Posts

  • 1
نشر

توجد مكتبة Dropzone.js أظنها الأفضل والأكثر شيوعا، تمتلك حتى جزء خاص بالتلاعب مع الملفات على مستوى الخادم، 

تثبت عن طريق:

npm install --save dropzone

او عن طريق تضمين الملفات المصدرية:

<script src="https://unpkg.com/dropzone@5/dist/min/dropzone.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/dropzone@5/dist/min/dropzone.min.css" type="text/css" />

ثم تمرير معرف العنصر المستهدف الى التابع الباني الخاص بهاته المكتبة:

let myDropzone = new Dropzone("div#myId", { url: "/file/post"});

تعرف عن المكتبة اكثر من خلال التوثيق الخاص بها.

  • 0
نشر

يمكننا استغلال قوة web api المدمجة في لغة الجافاسكريبت مثل تأثيرات السحب والإفلات وغيرها 

  1. قم بسحب وإسقاط ملف تحميل HTML CSS 
<div class="upload-container">
      <input type="file" id="file_upload" />
</div>
<br>
<button class="upload-btn" onclick="uploadFiles()">حفظ</button>
  • هنا حددنا منطقة حاوية تحميل لإسقاط ملفات التحميل.
  • يتم تعريف عنصر <input> في HTML بنوع السمة = "file" لاستيعاب ملف التحميل.
  • يتم تعريف عنصر <button> في HTML لإرسال ملفات التحميل.

وهنا بعض التنسيقات بلغة css 

.upload-container {
    position: relative;
}
.upload-container input {
    border: 1px solid #92b0b3;
    background: #f1f1f1;
    outline: 2px dashed #92b0b3;
    outline-offset: -10px;
    padding: 100px 0px 100px 250px;
    text-align: center !important;
    width: 500px;
}
 
.upload-container input:hover {
    background: #ddd;
}
 
.upload-container:before {
    position: absolute;
    bottom: 50px;
    left: 245px;
    content: " (or) Drag and Drop files here. ";
    color: #3f8188;
    font-weight: 900;
}
 
.upload-btn {
    margin-left: 300px;
    padding: 7px 20px;
}

سحب وإسقاط ملف التحميل بالجافاسكريبت

الآن سوف نستخدم كود Javascript لقراءة الملفات المرفوعة وإرسالها للتحميل.

function uploadFiles() {
  // نحدد طول الملفات المختارة لنعمل عليها تست بسيط
    var files = document.getElementById('file_upload').files;
    if(files.length==0){
        alert("يرجى تحديد الملفات...");
        return;
    }
    var filenames="";
    for(var i=0;i<files.length;i++){
        filenames+=files[i].name+"\n";
    }
    alert("الملفات المختارة:\n____________________\n"+filenames);
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...