App သို့ File Upload ထည့်နည်း- Storage၊ ကန့်သတ်ချက်များနှင့် လုံခြုံရေး
App သို့ file upload ထည့်ရန် ဖိုင်များကို object storage (bucket) တွင် သိမ်းပါ၊ server ၏ disk သို့မဟုတ် database တွင် မသိမ်းပါနှင့်၊ ထို့နောက် ဖိုင်၏ key၊ အမည်၊ အရွယ်အစား၊ type နှင့် ပိုင်ရှင် ပါသော သေးငယ်သော record တစ်ခုကို database တွင် သိမ်းပါ။ ဖိုင်အရွယ်အစားနှင့် type ကို server ပေါ်တွင် စစ်ပါ၊ ဖိုင်များ public ဖြစ်မည်လား (ထုတ်ကုန်ဓာတ်ပုံများကဲ့သို့) သို့မဟုတ် private ဖြစ်မည်လား (ငွေတောင်းခံလွှာများကဲ့သို့) ကို အစောပိုင်းတွင် ဆုံးဖြတ်ပါ၊ private ဖိုင်များကို တောင်းဆိုသူကို စစ်ပြီးမှသာ ပေးပါ။ AI app builder တွင် upload feature ကို prompt တစ်ခုဖြင့် ဖော်ပြနိုင်သည်၊ အရေးကြီးသည်မှာ redeploy ပြီးနောက် ဖိုင်များ ရှိနေခြင်းနှင့် မှားသော သူက ဖွင့်မရခြင်းကို စမ်းသပ်ခြင်း ဖြစ်သည်။
ဘယ်လို upload လိုအပ်သလဲ ဆုံးဖြတ်ပါ
တည်ဆောက်မီ မေးခွန်းသုံးခုကို ဖြေပါ-
- ဘာဖိုင်များလဲ? ပရိုဖိုင်ဓာတ်ပုံများ၊ ထုတ်ကုန်ပုံများ၊ PDF များ၊ spreadsheet များ၊ audio၊ video။ ၎င်းက type နှင့် အရွယ်အစား ကန့်သတ်ချက်များကို ဆုံးဖြတ်သည်။
- ဘယ်သူမြင်နိုင်သလဲ? လူတိုင်း (public ပုံပြခန်း) သို့မဟုတ် တင်သူနှင့် admin များသာ (စာချုပ်များ၊ ID စာရွက်စာတမ်းများ၊ client ဖိုင်များ)။
- Upload ပြီးနောက် ဘာဖြစ်မလဲ? သိမ်းရုံသာ၊ preview ပြရန်၊ ပုံကို အရွယ်ပြင်ရန် သို့မဟုတ် အကြောင်းအရာကို ဖတ်ရန်။
Public ပုံများနှင့် private စာရွက်စာတမ်းများသည် မတူညီသော setup လိုအပ်သဖြင့် ဦးစွာ ဆုံးဖြတ်ပါ။
ဖိုင်များ ဘယ်မှာ ရှိသင့်သလဲ
| ရွေးချယ်မှု | ဘယ်လို အလုပ်လုပ်သလဲ | အကောင်းဆုံး အသုံးချပုံ | သတိပြုရန် |
|---|---|---|---|
| Object storage (bucket) | ဖိုင်များအတွက် ပြုလုပ်ထားသော ဝန်ဆောင်မှုတွင် သိမ်းသည်၊ database က key သို့မဟုတ် URL သိမ်းသည် | app အများစု | Access စည်းမျဉ်းများကို မှန်ကန်စွာ သတ်မှတ်ရမည် |
| Platform ပေးသော storage | App builder သို့မဟုတ် host က bucket ကို ဖွင့်ပေးသည် | ထို platform ပေါ်တွင် တည်ဆောက်ထားသော app များ | ကန့်သတ်ချက်နှင့် စျေးနှုန်းသည် platform ကို လိုက်သည် |
| Server disk | App server ၏ filesystem သို့ ဖိုင်များ ရေးသည် | ဒေသတွင်း development သာ | ပြန်စတင်ခြင်း သို့မဟုတ် redeploy တွင် မကြာခဏ ပျက်သည် |
| Database အတွင်း | ဇယားတစ်ခုတွင် ဖိုင် byte များ သိမ်းသည် | လုံးဝ မကြာခဏ | Database ကို ဖောင်းပွစေပြီး backup ကို နှေးစေသည် |
| တတိယပါတီ upload widget | Hosted uploader ဝန်ဆောင်မှုက upload တစ်ခုလုံး ကိုင်တွယ်သည် | ကြီးသော media၊ image transform | နောက်ထပ် vendor၊ account နှင့် ငွေတောင်းခံလွှာ |
App အများစုအတွက် object storage နှင့် database record သည် မှန်ကန်သော အဖြေ ဖြစ်သည်။ Database row သည် သင့် app မေးသော အရာ ဖြစ်သည် ("ဤအသုံးပြုသူ၏ စာရွက်စာတမ်းများ ပြပါ")၊ bucket က bytes များကိုသာ ကိုင်ထားသည်။
Public နှင့် private ဖိုင်များ
- Public ဖိုင်များ (ထုတ်ကုန်ဓာတ်ပုံများ၊ blog ပုံများ၊ avatar များ) ကို public URL မှ ပြသနိုင်သည်။ လင့်ခ်ရှိသူ မည်သူမဆို ဖွင့်နိုင်သည်၊ ဤအကြောင်းအရာအတွက် ပြဿနာမရှိပါ။
- Private ဖိုင်များ (ငွေတောင်းခံလွှာ၊ စာချုပ်၊ ဆေးဘက်ဆိုင်ရာ သို့မဟုတ် ID စာရွက်စာတမ်း၊ client ပေးပို့မှု) တွင် ခန့်မှန်းနိုင်သော public URL မရှိရပါ။ Server က logged-in အသုံးပြုသူသည် ပိုင်ရှင် သို့မဟုတ် ခွင့်ပြုချက်ရှိမရှိ စစ်ပြီး ထို့နောက် ပြန်ပို့ခြင်း သို့မဟုတ် signed URL ပေးသည်- ခဏတာသာ အလုပ်လုပ်သော လင့်ခ်။
Private ဖိုင်များကို ခန့်မှန်းနိုင်သော အမည်များဖြင့် public bucket တွင် သိမ်းခြင်းသည် အဖြစ်အများဆုံး နှင့် ပြင်းထန်သော ချို့ယွင်းချက် ဖြစ်သည်။ /uploads/invoice-102.pdf ကို ခန့်မှန်းသူ မည်သူမဆို အခြားသူ၏ ငွေတောင်းခံလွှာကို ရနိုင်သည်။
ဥပမာ prompts
Public ပုံ upload-
Admin များက ထုတ်ကုန်တစ်ခုလျှင် ဓာတ်ပုံ ၅ ပုံအထိ upload လုပ်ခွင့်ပေးပါ။ JPG၊ PNG နှင့် WebP ကို ပုံတစ်ပုံလျှင် 5 MB အထိ လက်ခံပါ။ ဖိုင်များကို file storage တွင် သိမ်းပါ၊ ဖိုင်တစ်ခုစီ၏ key၊ အရွယ်အစားနှင့် အစဉ်လိုက်အမှတ်ကို product_images ဇယားတွင် သိမ်းပါ၊ thumbnail များနှင့် ဖယ်ရှားရန် ခလုတ် ပြပါ။ Type နှင့် အရွယ်အစားကို browser တွင်သာ မက server ပေါ်တွင်လည်း စစ်ပါ။
Private စာရွက်စာတမ်း upload-
Logged-in client များအတွက် Documents စာမျက်နှာ ထည့်ပါ။ Client များက PDF 20 MB အထိ upload လုပ်နိုင်ပါစေ။ ဖိုင်များ private ဖြစ်ရမည်- file storage တွင် သိမ်းပါ၊ owner ID၊ မူရင်း ဖိုင်အမည်၊ အရွယ်အစားနှင့် upload အချိန်ကို documents ဇယားတွင် သိမ်းပါ၊ ပိုင်ရှင်နှင့် admin များသာ download လုပ်နိုင်စေပါ။ Download များသည် ခွင့်ပြုချက် စစ်သော server route မှ ဖြစ်ရမည်။ ဤဖိုင်များအတွက် public URL ဘယ်တော့မှ မပေးပါနှင့်။
အသုံးဝင်သော နောက်ဆက်တွဲများ-
Upload အတွင်း progress bar နှင့် ဖိုင်သည် ကြီးလွန်းသည် သို့မဟုတ် type မှားသည် ဆိုသော ရှင်းလင်းသော error ပြပါ။
Document row ကို ဖျက်သောအခါ သိမ်းထားသော ဖိုင်ကိုပါ ဖျက်ပါ။
အဆင့်လိုက် လုပ်ဆောင်ပုံ
- Type နှင့် အရွယ်အစား ကန့်သတ်ချက်များ upload field တစ်ခုစီအတွက် ရွေးပါ။ တိကျစွာ ဖော်ပြပါ- "PDF 20 MB အထိ" ဟု၊ "စာရွက်စာတမ်းများ" ဟု မဟုတ်ပါ။
- Storage ကို ဖွင့်ပါ။ AI builder တွင် upload တောင်းဆိုပါက ၎င်းက setup လုပ်ပေးမည်၊ အခြားနေရာတွင် bucket ဖန်တီးပြီး credential များကို server-side secret အဖြစ် ထည့်ပါ။
- ဖိုင် record များအတွက် database ဇယား ဖန်တီးပါ- ID၊ ပိုင်ရှင်၊ storage key၊ မူရင်းအမည်၊ type၊ အရွယ်အစား၊ created-at။
- Server ပေါ်တွင် upload route တည်ဆောက်ပါ- အသုံးပြုသူ logged in ဖြစ်မှု၊ type နှင့် အရွယ်အစား စစ်ဆေးမှု၊ လုံခြုံသော storage key ဖန်တီးမှု (အသုံးပြုသူ၏ ဖိုင်အမည်ကို မသုံးပါ)၊ ဖိုင်သိမ်းမှု၊ record ထည့်မှု။
- Download သို့မဟုတ် display လမ်းကြောင်း တည်ဆောက်ပါ- public ဖိုင်များအတွက် public URL၊ private ဖိုင်များအတွက် ခွင့်ပြုချက် စစ်သော route သို့မဟုတ် signed URL။
- UI တည်ဆောက်ပါ- ဖိုင်ရွေးချယ်သည့် ကိရိယာ၊ လိုအပ်လျှင် drag and drop၊ progress၊ preview များ၊ error များ။
- ဖျက်ခြင်းကို ကိုင်တွယ်ပါ record ဖျက်သည့်အခါ သိမ်းထားသော ဖိုင်ကိုပါ ဖျက်စေရန်။
- စမ်းပါ- upload၊ reload၊ redeploy သို့မဟုတ် publish၊ ပြီးလျှင် ဖိုင်ဖွင့်နိုင်သေးသလား စစ်ပါ။ ထို့နောက် အသုံးပြုသူ တစ်ယောက်ခြားဖြင့် ဝင်ပြီး ပထမအသုံးပြုသူ၏ private ဖိုင်ကို ဖွင့်ကြည့်ပါ။
အဖြစ်များသော အမှားများ
- Upload များကို server disk သို့ ရေးခြင်း။ Development တွင် အလုပ်လုပ်သော်လည်း ပြန်စတင်ပြီး redeploy ပြီးနောက် ဖိုင်များ ပျောက်သည်။
- Browser ၏ စစ်ဆေးမှုကို ယုံခြင်း။ ဖိုင် input ၏ "accept" setting သည် အကြံပြုချက်ဖြစ်ပြီး လုံခြုံရေး မဟုတ်ပါ။ Type နှင့် အရွယ်အစားကို server ပေါ်တွင် စစ်ပါ။
- အသုံးပြုသူ၏ ဖိုင်အမည်ကို storage key အဖြစ် သုံးခြင်း။ အမည်တူများ ထိရှိနိုင်ပြီး ထူးဆန်သော character များ ပါနိုင်သည်။ Unique key ဖန်တီးပြီး မူရင်းအမည်ကို သီးခြား သိမ်းပါ။
- Private ဖိုင်များကို public bucket တွင်။ အထက်တွင် ပြောပြပြီး- သတင်းဖြစ်စေသည့် ပြဿနာ။
- Type မည်သည့်ဖိုင်မဆို ခွင့်ပြုခြင်း။ HTML သို့မဟုတ် SVG ဖိုင်များကို domain ကိုယ်တိုင်မှ serve လုပ်သောအခါ script များ run နိုင်သည်။ လိုအပ်သော type များကိုသာ လက်ခံပါ။
- အရွယ်အစား ကန့်သတ်ချက် မရှိခြင်း။ Upload ကြီးတစ်ခုတည်းက storage ခွင့်ပြုချက်ကို စားနိုင်ပြီး request ကို timeout ဖြစ်စေနိုင်သည်။
- Orphan ဖိုင်များ။ Database row ကို ဖျက်ပြီး ဖိုင်ကို မဖျက်ခြင်းသည် သင် ပေးချေနေသော storage ကို တဖြည်းဖြည်း ပြည့်စေသည်။
- ဖုန်းကို မေ့ခြင်း။ ဖုန်းဓာတ်ပုံများသည် ကြီးနိုင်ပြီး HEIC ကဲ့သို့ format များဖြစ်နိုင်သည်၊ လက်ခံရမလား ပြောင်းရမလား ဆုံးဖြတ်ပါ။
Checklist
- ဖိုင်များသည် object storage သို့ သွားသည်၊ server disk သို့ သို့မဟုတ် database သို့ မသွား
- ဖိုင်တစ်ခုစီတွင် ပိုင်ရှင်၊ key၊ အမည်၊ type နှင့် အရွယ်အစားပါ database record ရှိသည်
- Type နှင့် အရွယ်အစားကို server ပေါ်တွင် စစ်သည်
- Storage key များကို ဖန်တီးထားသည်၊ ဖိုင်အမည်မှ မယူပါ
- Private ဖိုင်များကို ခွင့်ပြုချက် စစ်ပြီးမှသာ serve လုပ်သည်
- အခြားအသုံးပြုသူသည် link ရှိသော်လည်း သင့် private ဖိုင်များကို ဖွင့်မရ
- Record ဖျက်သည့်အခါ ဖိုင်ကိုပါ ဖျက်သည်
- Publish သို့မဟုတ် redeploy ပြီးနောက်လည်း ဖိုင်များ load ဖြစ်သည်
- Upload error များကို ဖုန်းအပါအဝင် ရှင်းလင်းစွာ ပြသသည်
Mythex တွင် File Upload
Mythex သည် app ကို upload လိုအပ်သည့်အခါ project အတွက် file storage ကို အလိုအလျောက် ဖွင့်ပေးနိုင်သည်၊ bucket ကို လက်ဖြင့် provision လုပ်ရန် မလိုပါ။ Chat တွင် /storage ဟု ရိုက်နိုင်သည်လည်း ဖြစ်သည်။ Free နှင့် Pro တွင် ရနိုင်သည်၊ Free တွင် 1 GB ကန့်သတ်ချက် ရှိပြီး Settings → Storage အောက်တွင် အခြေအနေ ကြည့်နိုင်သည်။
Docs က published hosting သည် တည်မြဲသော local filesystem မဟုတ်ကြောင်း အတိအကျ ဖော်ပြသဖြင့် disk သို့ မသိမ်းဘဲ platform storage ကို သုံးရန် agent ကို တောင်းဆိုပါ။ သိမ်းထားသော ဖိုင်များနှင့် download များကို အရွယ်အစားနှင့် download ပြုလုပ်သည့် ပမာဏအလိုက် သင့် credit လက်ကျန်မှ ပေးချေသည်၊ Pro သည် Free နှုန်း၏ တစ်ဝက်ကို ပေးရသည်။ Docs ရှိ File storage ကို ကြည့်ပါ။
Upload များသည် ဖိုင်မှတ်တမ်းများအတွက် database နှင့် private ဖိုင်များအတွက် login နှင့် မကြာခဏ တွဲလျက် ရှိသည်။ ဖောက်သည်များ စာရွက်စာတမ်း ဖလှယ်ရန် နေရာတစ်ခု တည်ဆောက်နေပါက client portal တည်ဆောက်နည်း ကို ကြည့်ပြီး launch မတိုင်မီ လုံခြုံရေး checklist ကို ဖြတ်ပါ။
မေးခွန်းများ
Upload ဖိုင်များကို ဘယ်မှာ သိမ်းသင့်သလဲ?
Object storage (bucket ဟု ခေါ်သော ဖိုင်များအတွက် ပြုလုပ်ထားသော ဝန်ဆောင်မှု) တွင် သိမ်းပါ၊ app server ၏ disk တွင် သို့မဟုတ် database အတွင်း မဟုတ်ပါ။ Database တွင် ဖိုင်၏ key သို့မဟုတ် URL၊ အမည်၊ အရွယ်အစားနှင့် ပိုင်ရှင် အချက်အလက်များကိုသာ သိမ်းပါ။
Publish သို့မဟုတ် redeploy ပြီးနောက် တင်ထားသော ဖိုင်များ ဘာကြောင့် ပျောက်သွားသလဲ?
Hosting platform အများစုတွင် တည်မြဲသော local disk မရှိပါ- app ပြန်စတင်သည့်အခါ သို့မဟုတ် redeploy လုပ်သည့်အခါ disk တွင် ရေးထားသော ဖိုင်များ ပျောက်သည်။ Upload များကို object storage တွင် သိမ်းပါ။
Upload ဖိုင်များကို ကိုယ်ရေးကိုယ်တာ ဖြစ်အောင် ဘယ်လို ထားမလဲ?
ဖိုင်များကို public ဖတ်ခွင့် မပေးပါနှင့်။ Server က logged-in အသုံးပြုသူ ဖိုင်ကို ကြည့်ခွင့်ရှိမရှိ စစ်ပြီး ဖိုင်ကို ပို့ပါ သို့မဟုတ် ခဏတာ signed link ပြန်ပေးပါ။
Mythex တွင် file upload ရှိပါသလား?
ရှိပါသည်။ Mythex သည် app ကို upload လိုအပ်သောအခါ project အတွက် file storage ကို ဖွင့်ပေးနိုင်သည်၊ Free နှင့် Pro တွင်၊ Free တွင် 1 GB အထိ ကန့်သတ်သည်။ Agent ကို upload feature တောင်းဆိုခြင်း သို့မဟုတ် /storage ဟု ရိုက်ခြင်းဖြင့် လုပ်နိုင်သည်။