PHP də kömək

Salam PHP də belə bir şey etmək istəyirəm, istiqamət verməyinizi xahiş edirəm: bütün istifadəçilər sayta nə fayl yükləsələr hamısı bir direktoriyanın içində olsun, lakin, fayllar serverə yüklənəndə əsl adı faylınid nömrəsi və userin id nömrəsi bazaya yazılsın, faylın özü isə id nömrə şəklində saxlanılsın serverdə.Lakin saytdan kimsə həmən faylı yükləmək istəsə sayt.com/userid/fileid/fayladi yazanda həmən faylı yükləyə bilsin, yəni onun komputerinə faylın adı olduğu kimi yüklənsin, id nömrəsi şəklində yox. Əslində hər dəfə serverə fayl yüklənəndə ayrıca direktoriya açmaq şəkilində etmək olar, lakin mən istəmirəm ki, bu qədər direktoriya yaransın, lakin eyni zamanda kimsə faylı yükləmək istəsə öz adı formasında yükləyə bilsin.Bəlkə digər başqa yolla da etmək olarsa, təkliflərinizi verin zəhmət olmasa. P.S:Yəni əsas prinsip, iki eyni adda fayl yüklənsə problem çıxmasın, eyni zamanda faylların heç birinin adında dəyişiklik olmasın.

Verilmiş cavablar və yazılan şərhlər (3 cavab var)

Menlardo Lardomen (2012-03-10 20:04:39)
Amma indi fikirləşirəm ki, belə serveri çox məşğul edəcəm, həm də səhv eləmirəmsə bu zaman download resume etmək olmayacaq.Bəs əgər mən hər user və hər userin hər faylı üçün ayrıda direktoriya açmış olsam, sonra gələcəkdə userlərin sayı 2 min, hərəsinin də 100 faylı və yaxud bundan artıq olsa bu qədər direktoriyalarla heç bir problem olmayacaq ?

Elvin Hacı (2012-03-10 12:58:11)
Salam. Dediyiniz məsələni həll etmək olar. Amma uzun məsələdir, ondansa daha optimal yollar seçin. Siz deyən məsələni 1. Apache .htaccess faylında müvafiq sətirlər əlavə etməklə elə etmək olar ki, sayt.com/userid/fileid/fayladi müraciətini edəndə apache onu sayt.com?uid=userid&fid=fileid&fname=fayladi kimi başa düşsün. Bunu etmək çətin deyil. Beləliklə fayla ulaşım təmin oldundu url-dəki FİD dəyişəni vasitəsilə. 2. Sonrakı mərhələ isə faylı yükləməyə təqdim edərkən id ilə yox fayl adı ilə təqdim etməkdir. Bu isə serverə əlavə güc salan prosesdir. Yükləmə prosesində file_get_contents("id.tip") verib daha sonra onu header-i faylin tipinə uyğun olan bir fayl şəklində echo vermək lazımdır. Bu zaman user faylın_adı.faylın_tipi kimi bir fayl yükləmiş olacaq. Beləliklə bircə adi fayl yükləmə işinə görə bu qədər əziyyət çəkmiş olacaqsınız. Mən sadəcə prosesi təsvir elədim, müvafiq kodları google-layıb tapmaq asandır. (Əsas həlledici olan .htaccess-ə yazacağınız apache kodudur.)

Emin Rəhmanov (2012-03-10 08:35:23)
Salam. Eger fayllarin bir qovluqda saxlanaraq ve yuklenendede qovluq/fayladi.fayltipi kimi pramoy browserde yazaraq yuklenilmesini isteyirsinizse bu mumkun deyil. Ola biler ama eyni adli fayl olanda problem yaranacaq. Sizin dediyiniz kimi fayllari bir qovluqda saxlayib lakin yuklenende faylin heqiqi adi kimi yuklenmesi ucun mutleq fayli yukleyende yukle.php?fayl_id=$fayl_id bu wekilde yazib yuklenmelidi. Bunuda bele qura bilersiniz. Fayl servere yuklenende fayl qovluqda her hansi idle saxlanilsin. Sonra faylin idi.tipi, yani serverin qovlugundaki adi ve faylin esl adi mysql bazaya insert olunsun. Istifadeci fayli yukleyende ise fayl bazadaki adi ile kew qovluguna copy olunsun ve istifadeci kew qovlugu/faylin esl adi.faylin tipi linkine yonlendirilsin ordan yuklesin fayli. Kew qovlugundan da fayl teyin etdiyiniz vaxtdan sonra silinsin.