Image URL yapısı nasıl olmalıdır?

Arsen Lüpen

Hectopat
Katılım
28 Şubat 2021
Mesajlar
89
Daha fazla  
Cinsiyet
Erkek
Merhabal kullanıcıdan aldığım resimleri veritabanıma.
["/media/images/1/profile_image_0.jpg", "/media/images/1/profile_image_1_5XhOKvE.jpg", "/media/images/1/profile_image_3_1719061919823.jpg", null, null, null, null, null, null]
Bu şekilde kayıt ediyorum. media/images/{user_id}/profile_images_{index}_{(Date.now)}.jpg şeklinde bir yapı var. Tarihi eklememin sebebi resimlerin uniqe olmasını sağlamak için ekledim. Sizce bu yapı nasıl olmalı? Profesyonel proejelerde nasıl bir yapı uygulanır? Teşekkür ederim.
 
Bence bu yapı gayet güzel. Bir eksik bulamadım şahsen. Normalde sonuna rastgele bir numara da eklemenizi tavsiye ederdim ancak gördüğüm kadarıyla bu bir profil fotoğrafı.

Dolayısıyla 2 farklı kişinin aynı dosyanın üzerine yazma ihtimali yok gibi.
 
Öncelikle SA kardeşim. Benim bildiğim genellikle dosyaların (resim, video, vb.) isimlerinin çakışmaması için unique bir damgaya ihtiyaç duyuyorlar. Kullandığın unique zaman damgası, projende kullandığın verilere göre değişir. Mesela bir mesajlaşma uygulaması üretirken eğer telefon numarası ile giriş yapılıyorsa mesela damga olarak benzersiz telefon numaralarını ekleyebilirsin (+905555555555.jpeg gibi) veya zaman damgası ile telefonu da ekleyebilirsin. Aslında direkt telefon numarasını eklersen sıkıntı çünkü bir kullanıcı, belki bir resmin ismini bir telefon numarası ile değiştirmiş ve bunu senin server'a load ediyor olabilir. Bu nedenle aldığın her resim input'una client veya server tarafında zaman damgası eklemen, daha profesyonel olacaktır.
 
Öncelikle SA kardeşim. Benim bildiğim genellikle dosyaların (resim, video, vb.) isimlerinin çakışmaması için unique bir damgaya ihtiyaç duyuyorlar.

Kullandığın unique zaman damgası, projende kullandığın verilere göre değişir. Mesela bir mesajlaşma uygulaması üretirken eğer telefon numarası ile giriş yapılıyorsa mesela damga olarak - +905555555555.jpeg gibi - benzersiz telefon numaralarını veya zaman damgası ile telefonu da ekleyebilirsin.

Aslında direkt telefon numarasını eklersen sıkıntı çünkü bir kullanıcı, belki bir resmin ismini bir telefon numarası ile değiştirmiş ve bunu senin server'a load ediyor olabilir. Bu nedenle aldığın her resim input'una client veya server tarafında zaman damgası eklemen, daha profesyonel olacaktır.
Zaman damgası var aslında ama? Date.now(), zaman damgasıdır.
 
Mesela dosya gönderimini sağlayan örnek bir Node.js kodu göstereyim sana bununla ilgili, pekiştirmen için (Backend konusunda en iyi olduğum dil JS de ondan):

const multer = require("multer");

const storage = multer.createDiskStorage({
destination: function(req, file, cb) {
cb(null, "images");
},
filename: function(req, file, cb) {
cb(null, Math.floor(Date.now() / 1000 + file.originalname);
}
});
Gördüğün gibi resim ismine tarih damgası ekliyoruz.

Zaman damgası var aslında ama? Date.now(), zaman damgasıdır.



Evet, biliyorum. Onu dedim zaten.

Mesela benim de Java ve JavaScript ile geliştirdiğim bir uygulama var. Kullanıcı profil fotoğrafı seçince seçtiği fotoğraf, aşağıdaki fotoğraftaki sunucuma direkt kaydediliyor (Üstte sunucumun IP adresi yazıyordu, onu gizledim.). Yani mesela fotoğrafa bakarsan dosya isminde "zaman damgası + telefon numarası" yazıyor. Yani resmi veri tabanına (MySQL, PostgreSQL, SQLite vb.) kaydetmek çok da mümkün değil. Direkt Windows veya Linux server'ımızın dizinine kaydediyoruz ve yeri geldiğinde de server'dan bu resimleri çekip uygulamamıza aktarıyoruz.
IMG-20240622-WA0017.jpg
 
Son düzenleme:
Mesela benim de Java ve JavaScript ile geliştirdiğim bir uygulama var. Kullanıcı profil fotoğrafı seçince seçtiği fotoğraf, aşağıdaki fotoğraftaki sunucuma direkt kaydediliyor (Üstte sunucumun IP adresi yazıyordu, onu gizledim.). Yani mesela fotoğrafa bakarsan dosya isminde "zaman damgası + telefon numarası" yazıyor. Yani resmi veri tabanına (MySQL, PostgreSQL, SQLite vb.) kaydetmek çok da mümkün değil. Direkt Windows veya Linux server'ımızın dizinine kaydediyoruz ve yeri geldiğinde de server'dan bu resimleri çekip uygulamamıza aktarıyoruz.

Eki Görüntüle 2229508
Katılıyorum, hem direkt veritabanına görseli - örneğin base64 formatında - eklesek dahi bu, veri çektiğimizdeki kaynak tüketimini arttıracaktı. Böyle kaynaklar daha optimize kullanılıyor.
 
uuid + dimension kullaniyoruz biz projelerde. Upload edilen image process edilip farkli dimension'larda kaydediliyor.

Kod:
a4ee2055-3532-4ffd-a356-e40dbeecd506_300_200

gibi.
 
Hepiniz cevabu için teşekkür ederim. Ben de uniqe liği tarih ile sağlamaya çalıştım. Cevaplarınıza göre tarih yeterli olacaktır gibi anladım. Yine de tarih haricinde bir şey daha eklesem daha iyi olur mu yoksa yeterli midir?
 
Hepiniz cevabu için teşekkür ederim. Ben de uniqe liği tarih ile sağlamaya çalıştım. Cevaplarınıza göre tarih yeterli olacaktır gibi anladım. Yine de tarih haricinde bir şey daha eklesem daha iyi olur mu yoksa yeterli midir?
Eğer kullanıcıların server'ına 4K HD fotoğraf upload edip server'ının alanını yememelerini istiyorsan istemci veya sunucu tarafında fotoğrafı compress'leyebilirsin veya boyutlarını değiştirebilirsin. Kullanıcı deneyimi açısından istemci tarafında image'i compress'lesen daha iyi ancak güvenlik açısından server tarafında sıkıştırman çok daha iyi olacaktır. Çünkü client tarafında sıkıştırma kodunu yazsan bile başka biri senin server'a HTTP / HTTPS isteği göndererek her türlü 4K HD resmi sıkıştırmadan aktarabilir. Bu nedenle sunucu kodundaki endpoint'inde image'i sıkıştırsan güvenlik açısından daha iyi olur, genellikle %80 kalite tavsiye ediliyor.
 

Geri
Yukarı