0
سبد خرید من 0 دوره
سبد خرید شما خالیست :(
پرسش

چطور در React.js یک فایل رو دانلود کنیم؟

How to download file in React.js?

من توی اپلیکیشن React.js دارم و می‌خوام وقتی کاربر روی دکمه‌ای کلیک می‌کنه، یه فایل به صورت خودکار دانلود بشه, یعنی کاربر نیازی نداشته باشه که لینک رو باز کنه و به صورت خودکار فایل دانلود بشه. برای این کار چه روشی رو باید استفاده کنم؟ چطور می‌تونم این کار رو انجام بدم؟

1403/06/02
پاسخ
محمدامین سعیدی راد
بیوگرافی محمدامین سعیدی راد

برای اینکه بتونی توی React.js یه فایل رو به صورت خودکار دانلود کنی، می‌تونی از تگ <a> و خاصیت download استفاده کنی. این روش خیلی ساده و مؤثره. با استفاده از این روش، وقتی کاربر روی دکمه‌ای کلیک می‌کنه، فایل به صورت خودکار دانلود میشه.

اولین قدم اینه که یه تابع ایجاد کنی که URL فایل مورد نظر رو بهش بدی. این تابع میاد و یه لینک <a> می‌سازه و اونو به صفحه اضافه می‌کنه و بعد به صورت خودکار روش کلیک می‌کنه تا فایل دانلود بشه. در نهایت لینک رو از صفحه پاک می‌کنه. به این ترتیب کاربر فایلی که می‌خوای رو بدون نیاز به دخالت بیشتر دانلود می‌کنه.

این کد رو توی فایل کامپوننت React.js خودت اضافه کن:

const downloadFile = (url) => {
  const link = document.createElement('a'); // Create a <a> tag
  link.href = url; // Your File URL
  link.setAttribute('download', 'file'); // Set download attribute
  document.body.appendChild(link); // append link to DOM
  link.click(); // Auto Click action
  link.remove(); // Remove link
};

حالا می‌تونی این تابع رو به یک دکمه یا هر المان دیگه‌ای که می‌خوای اضافه کنی تا وقتی کاربر روش کلیک کرد، فایل دانلود بشه. یه مثال از استفاده از این تابع در یه دکمه رو اینجا می‌ذارم:

<button onClick={() => downloadFile('https://example.com/myfile.pdf')}>
    دانلود فایل
</button>

تو این مثال، با کلیک روی دکمه، فایل myfile.pdf از آدرس https://example.com/myfile.pdf دانلود میشه. البته باید حتماً URL فایل صحیح باشه و مطمئن شی که دسترسی‌های لازم برای دانلود فایل رو داری.

این روش یکی از ساده‌ترین و مطمئن‌ترین روش‌ها برای دانلود فایل در React.js هست و کار باهاش خیلی راحته. اگر نیاز به سفارشی‌سازی بیشتری هم داشتی، می‌تونی روی همین کد تغییرات لازم رو اعمال کنی

پاسخ: 1403/06/02
آخرین آپدیت: 1403/07/28