როგორ დავამატოთ ფაილების ატვირთვა თქვენს აპში: საცავი, ლიმიტები და უსაფრთხოება
აპში ფაილების ატვირთვის დასამატებლად შეინახეთ ფაილები ობიექტურ საცავში (bucket), და არა სერვერის დისკზე ან მონაცემთა ბაზაში, ხოლო მონაცემთა ბაზაში შეინახეთ პატარა ჩანაწერი ფაილის გასაღებით, სახელით, ზომით, ტიპითა და მფლობელით. სერვერზე შეამოწმეთ ფაილის ზომა და ტიპი, წინასწარ გადაწყვიტეთ, არის თუ არა ფაილები საჯარო (როგორიცაა პროდუქტის ფოტოები) თუ პირადი (როგორიცაა ინვოისები), და პირად ფაილებს მხოლოდ მაშინ აწვდით, როცა შემოწმებულია, ვინ ითხოვს. AI აპის შემქმნელში ატვირთვის ფუნქცია ერთი prompt-ით აღიწერება; მთავარი ნაწილი არის იმის ტესტირება, რომ ფაილები გადატვირთვის შემდეგაც რჩება და არასწორი მომხმარებელი მათ ვერ გახსნის.
გადაწყვიტეთ, რა ტიპის ატვირთვები გჭირდებათ
აშენებამდე უპასუხეთ სამ კითხვას:
- რა ფაილები? პროფილის ფოტოები, პროდუქტის სურათები, PDF-ები, ცხრილები, აუდიო, ვიდეო. ეს განსაზღვრავს ტიპისა და ზომის ლიმიტებს.
- ვის შეუძლია მათი ნახვა? ყველას (საჯარო გალერეა) თუ მხოლოდ ატვირთვის ავტორს და ადმინისტრატორებს (კონტრაქტები, პირადობის დოკუმენტები, კლიენტის ფაილები).
- რა ხდება ატვირთვის შემდეგ? უბრალოდ ინახება, იჩვენება გადახედვა, სურათები იცვლება ზომით, თუ მისი შიგთავსი იკითხება.
საჯარო სურათებსა და პირად დოკუმენტებს სხვადასხვა დაყენება სჭირდება, ამიტომ ეს პირველ რიგში გადაწყვიტეთ.
სად უნდა ინახებოდეს ფაილები
| ვარიანტი | როგორ მუშაობს | რისთვის კარგია | რას უნდა ფრთხილობდეთ |
|---|---|---|---|
| ობიექტური საცავი (bucket) | ფაილები ინახება სერვისში, რომელიც მათთვისაა შექმნილი; მონაცემთა ბაზა ინახავს გასაღებს ან URL-ს | თითქმის ყველა აპი | წვდომის წესები სწორად უნდა იყოს დაყენებული |
| პლატფორმის მიერ მოწოდებული საცავი | თქვენი აპის შემქმნელი ან ჰოსტი ბაკეტს (bucket) გაძლევთ | აპები, აგებული იმ პლატფორმაზე | ლიმიტები და ფასები პლატფორმას მიჰყვება |
| სერვერის დისკი | ფაილები ჩაიწერება აპის სერვერის ფაილურ სისტემაში | მხოლოდ ლოკალური დეველოპმენტი | ხშირად იშლება გადატვირთვისას ან ხელახალი დეპლოისას |
| მონაცემთა ბაზაში | ფაილის ბაიტები ინახება ცხრილში | თითქმის არასდროს | ზრდის მონაცემთა ბაზას, ანელებს სარეზერვო ასლებს |
| მესამე მხარის ატვირთვის ვიჯეტი | ჰოსტირებული ატვირთვის სერვისი მთელ პროცესს ასრულებს | მძიმე მედია, სურათების გარდაქმნა | კიდევ ერთი პროვაიდერი, ანგარიში და ანგარიშსწორება |
მრავალი აპისთვის სწორი პასუხი არის ობიექტური საცავი პლუს მონაცემთა ბაზის ჩანაწერი. მონაცემთა ბაზის ხაზი არის ის, რასაც თქვენი აპი ეკითხება („აჩვენე ამ მომხმარებლის დოკუმენტები“); bucket უბრალოდ ბაიტებს ინახავს.
საჯარო და პირადი ფაილები
- საჯარო ფაილები (პროდუქტის ფოტოები, ბლოგის სურათები, ავატარები) შეიძლება მიწოდებული იყოს საჯარო URL-ით. ბმულის მქონე ნებისმიერს შეუძლია მათი გახსნა, და ეს ამ ტიპის შიგთავსისთვის მისაღებია.
- პირადი ფაილები (ინვოისები, კონტრაქტები, სამედიცინო ან პირადობის დოკუმენტები, კლიენტის მიწოდებები) არასდროს უნდა ჰქონდეს გამოსაცნობი საჯარო URL. სერვერი ამოწმებს, რომ შესულ მომხმარებელს ფაილი ეკუთვნის ან აქვს უფლება, შემდეგ ან აწვდის მას, ან აბრუნებს ხელმოწერილ URL-ს — ბმულს, რომელიც მხოლოდ მოკლე დროით მუშაობს.
ხშირი და სერიოზული შეცდომაა, როცა პირადი ფაილები საჯარო bucket-შია ისეთი სახელებით, რომლებიც წინასწარ შეიძლება გამოიცნო. ვინც გამოიცნობს /uploads/invoice-102.pdf-ს, ვიღაც სხვის ინვოისს მიიღებს.
მაგალითი მოთხოვნები
საჯარო სურათის ატვირთვა:
მიეცი ადმინისტრატორებს საშუალება, თითო პროდუქტზე ატვირთონ 5-მდე პროდუქტის ფოტო. მიიღე JPG, PNG და WebP, თითო 5 MB-მდე. შეინახე ფაილები ფაილურ საცავში, ჩაწერე თითოეული ფაილის გასაღები, ზომა და თანმიმდევრობა product_images ცხრილში და აჩვენე მინიატურები წაშლის ღილაკით. ტიპი და ზომა შეამოწმე სერვერზე და არა მხოლოდ ბრაუზერში.
პირადი დოკუმენტის ატვირთვა:
დაამატე Documents გვერდი შესული კლიენტებისთვის. კლიენტებს შეუძლიათ ატვირთონ PDF-ები 20 MB-მდე. ფაილები პირადია: შეინახე ფაილურ საცავში, ხოლო documents ცხრილში ჩაწერე მფლობელის ID, ორიგინალი სახელი, ზომა და ატვირთვის დრო. ჩამოტვირთვა შეუძლიათ მხოლოდ მფლობელს და ადმინისტრატორებს. ჩამოტვირთვა სერვერის მარშრუტით მიდის, რომელიც უფლებას ამოწმებს. ამ ფაილებზე არასდროს გასცე საჯარო URL.
განვითარებული მოთხოვნები:
აჩვენე პროგრესის ზოლი ატვირთვისას და მკაფიო შეცდომა, თუ ფაილი ძალიან დიდია ან არასწორი ტიპისაა.
როცა დოკუმენტის ჩანაწერი წაიშლება, წაშალე შენახული ფაილიც.
ნაბიჯ-ნაბიჯ
- გაწერეთ ტიპები და ზომის ლიმიტები ყოველი ატვირთვის ველისთვის. იყავით კონკრეტული: „PDF 20 MB-მდე“, და არა „დოკუმენტები“.
- ჩართეთ საცავი. AI შემქმნელში ატვირთვა მოთხოვეთ და ის საცავს დააყენებს; სხვაგან შექმენით bucket და მისი ავთენტიფიკაციის მონაცემები შეინახეთ სერვერის მხარის საიდუმლოებად.
- შექმენით მონაცემთა ბაზის ცხრილი ფაილების ჩანაწერებისთვის: ID, მფლობელი, შენახვის გასაღები, ორიგინალი სახელი, ტიპი, ზომა, შექმნის დრო.
- ააგეთ ატვირთვის მარშრუტი სერვერზე: შეამოწმეთ, რომ მომხმარებელი შესულია, შეამოწმეთ ტიპი და ზომა, შექმენით უსაფრთხო შენახვის გასაღები (არა მომხმარებლის ფაილის სახელი), შეინახეთ ფაილი და ჩასვით ჩანაწერი.
- ააგეთ ჩამოტვირთვის ან ჩვენების გზა: საჯარო URL საჯარო ფაილებისთვის; უფლებაშემოწმებული მარშრუტი ან ხელმოწერილი URL პირადი ფაილებისთვის.
- ააგეთ ინტერფეისი: ფაილის ამრჩევი, საჭიროებისამებრ გადმოთრევა, პროგრესი, გადახედვა, შეცდომები.
- დაამუშავეთ წაშლა, რომ ჩანაწერის წაშლამ შენახული ფაილიც წაშალოს.
- ტესტირება: ატვირთეთ, გადატვირთეთ, ხელახლა დეპლოი ან გამოაქვეყნეთ და შეამოწმეთ, რომ ფაილი ისევ იტვირთება. შემდეგ შედით სხვა მომხმარებლით და სცადეთ პირველი მომხმარებლის პირადი ფაილის გახსნა.
ხშირი შეცდომები
- ატვირთვების ჩაწერა სერვერის დისკზე. დეველოპმენტში მუშაობს, შემდეგ ფაილები ქრება გადატვირთვის ან ხელახალი დეპლოის შემდეგ.
- ბრაუზერის შემოწმებებისადმი ნდობა. ფაილის შეყვანის „accept“ პარამეტრი მინიშნებაა და არა უსაფრთხოება. ტიპი და ზომა სერვერზე შეამოწმეთ.
- მომხმარებლის ფაილის სახელის გამოყენება შენახვის გასაღებად. სახელები ერთმანეთს ემთხვევა და შეიძლება უცნაური სიმბოლოები შეიცავდეს. შექმენით უნიკალური გასაღები და ორიგინალი სახელი ცალკე შეინახეთ.
- საჯარო bucket პირადი ფაილებისთვის. იხილეთ ზემოთ; ეს ის შემთხვევაა, რომელიც ახალი ამბების სათაურში ხვდება.
- ნებისმიერი ტიპის დაშვება. HTML ან SVG ფაილები, რომლებიც თქვენი დომენიდან მიეწოდება, ზოგ კონფიგურაციაში სკრიპტებს შეასრულებს. მიიღეთ მხოლოდ საჭირო ტიპები.
- ზომის ლიმიტის არქონა. ერთმა უზარმაზარმა ატვირთვამ შეიძლება შეჭამოს თქვენი საცავის ლიმიტი ან მოთხოვნა დროში ამოიწუროს.
- ობოლი ფაილები. მონაცემთა ბაზის ჩანაწერის წაშლა ფაილის წაშლის გარეშე ნელ-ნელა ავსებს საცავს, რომლისთვისაც იხდით.
- მობილური მოწყობილობის დავიწყება. ტელეფონის ფოტოები შეიძლება დიდი იყოს და HEIC-ის მსგავს ფორმატში; გადაწყვიტეთ, მიიღებთ თუ გადააკონვერტირებთ.
ჩამონათვალი
- ფაილები მიდის ობიექტურ საცავში, არა სერვერის დისკზე ან მონაცემთა ბაზაში
- ყოველ ფაილს აქვს მონაცემთა ბაზის ჩანაწერი მფლობელით, გასაღებით, სახელით, ტიპითა და ზომით
- ტიპი და ზომა სერვერზე მოწმდება
- შენახვის გასაღებები გენერირებულია და არა ფაილის სახელიდან აღებული
- პირადი ფაილები მიეწოდება მხოლოდ უფლების შემოწმების შემდეგ
- სხვა მომხმარებელს ვერ გახსნის თქვენს პირად ფაილებს, ბმულითაც კი
- ჩანაწერის წაშლა ფაილსაც შლის
- ფაილები ისევ იტვირთება გამოქვეყნების ან ხელახალი დეპლოის შემდეგ
- ატვირთვის შეცდომები ნათლად ჩანს, მათ შორის ტელეფონზე
ფაილების ატვირთვა Mythex-ში
Mythex-ს შეუძლია პროექტისთვის ფაილური საცავის ავტომატურად ჩართვა, როცა თქვენს აპს ატვირთვები სჭირდება, ასე რომ bucket ხელით არ უნდა დააყენოთ. ასევე შეგიძლიათ ჩატში აკრიფოთ /storage. ის ხელმისაწვდომია Free და Pro გეგმებზე, Free-ზე 1 GB ლიმიტით, და მის სტატუსს ხედავთ Settings → Storage-ში.
დოკუმენტაცია ცხადად ამბობს, რომ გამოქვეყნებული ჰოსტინგი არ არის მუდმივი ლოკალური ფაილური სისტემა, ამიტომ აგენტს სთხოვეთ პლატფორმის საცავის გამოყენება და არა დისკზე შენახვა. შენახული ფაილები და ჩამოტვირთვები იხდება თქვენი კრედიტების ბალანსიდან, ზომისა და ჩამოტვირთვების რაოდენობის მიხედვით; Pro იხდის Free ტარიფის ნახევარს. იხილეთ ფაილური საცავი დოკუმენტაციაში.
ატვირთვები ხშირად მონაცემთა ბაზასთან ერთად მიდის ფაილების ჩანაწერებისთვის და შესვლასთან პირადი ფაილებისთვის. თუ აშენებთ სივრცეს, სადაც კლიენტები დოკუმენტებს ცვლიან, იხილეთ როგორ ავაშენოთ კლიენტის პორტალი და გაშვებამდე გაიარეთ უსაფრთხოების ჩამონათვალი.
კითხვები
სად უნდა ინახებოდეს ატვირთული ფაილები?
ობიექტურ საცავში (სერვისი, რომელიც ფაილებისთვისაა შექმნილი, ხშირად bucket-ის სახელით), და არა აპის სერვერის დისკზე და არა მონაცემთა ბაზის შიგნით. თქვენს მონაცემთა ბაზაში შეინახეთ მხოლოდ ფაილის გასაღები ან URL, პლუს ისეთი დეტალები, როგორიცაა სახელი, ზომა და მფლობელი.
რატომ ქრება ჩემი ატვირთული ფაილები გამოქვეყნების ან ხელახალი დეპლოის შემდეგ?
ჰოსტინგის უმეტესი პლატფორმა არ ინახავს მუდმივ ლოკალურ დისკს: როცა აპი თავიდან იწყება ან ხელახლა დეპლოიდება, მის დისკზე ჩაწერილი ფაილები იკარგება. შეინახეთ ატვირთვები ობიექტურ საცავში.
როგორ შევინარჩუნო ატვირთული ფაილები პირადად?
არ გახადოთ ფაილები საჯაროდ წასაკითხი. თქვენმა სერვერმა უნდა შეამოწმოს, რომ შესულ მომხმარებელს აქვს უფლება, ნახოს ფაილი, და შემდეგ გაუგზავნოს იგი ან დააბრუნოს მასზე მოკლევადიანი ხელმოწერილი ბმული.
უჭერს თუ არა Mythex ფაილების ატვირთვას?
დიახ. Mythex-ს შეუძლია პროექტისთვის ფაილური საცავის ჩართვა, როცა აპს ატვირთვები სჭირდება, Free და Pro გეგმებზე, Free-ზე 1 GB ლიმიტით. ატვირთვის ფუნქციას აგენტს სთხოვთ ან აკრიფებთ /storage.