Forum

asp.net fileupload ...
 
Bildirimler
Hepsini Temizle

[Çözüldü] asp.net fileupload ile belirttiğim kullanıcı ile dosya yazma yetkisi verme

8 Yazılar
4 Üyeler
0 Reactions
685 Görüntüleme
(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

Arkadaşlar merhaba,

fileupload ile dosyaları belirttiğim bir klasöre kaydetmek istiyorum fakat bu klasöre yazma yetkisi sadece domainadı\ozgur adlı kullanıcıda var. 

Bu durumda klasöre bu dosyayı kopyalarken bu kullanıcının yetkileriyle dosyayı yaz nasıl derim? 

 

 

Directory.CreateDirectory("C:\\OZGUR\\" + lblPlaka.Text);
IList<HttpPostedFile> SecilenDosyalar = FileUpload1.PostedFiles;
int adet = SecilenDosyalar.Count();
for (int i = 0; i < SecilenDosyalar.Count; i++)
{
FileUpload1.PostedFiles[i].SaveAs("C:\\OZGUR\\" + lblPlaka.Text+" + FileUpload1.PostedFiles[i].FileName);
}

 

 
Gönderildi : 12/05/2023 12:40

ibrahim yildiz
(@ibrahimyildiz)
Gönderiler: 4563
Co-Helper
 

https://www.google.com.tr/search?q=asp.net+file+upload+y%C3%B6ntemi

'balık vermez, nasıl tutulabildiğine yönlendirir'
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız. Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz. Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 12/05/2023 14:47

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 33311
Illustrious Member Yönetici
 

Merhaba,

Dosyaları kaydetmek istediğiniz klasörün yazma izni sadece "domainadı\ozgur" kullanıcısında olduğu için, dosyaları kaydetmek için bu kullanıcının yetkilerini kullanmanız gerekiyor. Bunu yapmak için, .NET Framework tarafından sağlanan System.Security.Principal ve System.Security.AccessControl sınıflarını kullanabilirsiniz. Aşağıdaki kod örneği, dosya için "domainadı\ozgur" kullanıcısının izinlerini ayarlamak için kullanılabilir:

string klasorYolu = "C:\\OZGUR\\" + lblPlaka.Text;

// Klasörü oluşturunuz (eğer varsa yok sayın)
Directory.CreateDirectory(klasorYolu);

// Dosya için "domainadı\ozgur" kullanıcısının izinlerini alın
string kullaniciAdi = "domainadı\\ozgur";
NTAccount kullaniciHesabi = new NTAccount(kullaniciAdi);
SecurityIdentifier kullaniciSID = (SecurityIdentifier)kullaniciHesabi.Translate(typeof(SecurityIdentifier));
FileSystemAccessRule izin = new FileSystemAccessRule(kullaniciSID, FileSystemRights.Write, AccessControlType.Allow);

// Dosya için izinleri ayarlayın
DirectoryInfo klasor = new DirectoryInfo(klasorYolu);
DirectorySecurity klasorIzinleri = klasor.GetAccessControl();
klasorIzinleri.AddAccessRule(izin);
klasor.SetAccessControl(klasorIzinleri);

// Dosyaları kopyalayın
foreach (HttpPostedFile dosya in SecilenDosyalar)
{
string dosyaYolu = Path.Combine(klasorYolu, dosya.FileName);
dosya.SaveAs(dosyaYolu);
}

Bu kod, öncelikle "domainadı\ozgur" kullanıcısının kimliğini alır ve bu kullanıcıya yazma izni veren bir FileSystemAccessRule nesnesi oluşturur. Daha sonra, klasörün mevcut izinlerini alır, yeni izni ekler ve değişiklikleri uygular. Son olarak, dosyaları belirtilen klasöre kaydeder.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 12/05/2023 15:04

(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

Hocam çok teşekkür ederim öncelikle. Şuan itibariyle çalışıyor.

Şimdide oluşturduğum bu klasörü açtırmayla ilgili sorun yaşıyorum. Localde çalıştırdığımda açılıyor. Server üzerinden çalıştırdığımda access denied hatası alıyorum.

string dosyakonumu = @"\\\\192.168.10.126\\Ortak";
var psi = new System.Diagnostics.ProcessStartInfo() { FileName = dosyakonumu, UseShellExecute = true };
System.Diagnostics.Process.Start(psi);

 
Gönderildi : 24/05/2023 11:06

ibrahim yildiz
(@ibrahimyildiz)
Gönderiler: 4563
Co-Helper
 

kodunuzda hata var.

'balık vermez, nasıl tutulabildiğine yönlendirir'
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız. Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz. Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 24/05/2023 12:45

(@ozguraltinel)
Gönderiler: 244
Reputable Member
Konu başlatıcı
 

@ibrahimyildiz merhaba,

Doğrusunu yazarsanız sevinirim.

 
Gönderildi : 24/05/2023 14:17

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 33311
Illustrious Member Yönetici
 

Ama bu doğru bir yöntem değil, çünkü buradaki amacımız yol göstermek, danışmanlık hizmeti vermiyoruz. 

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 24/05/2023 16:32

(@serkanates)
Gönderiler: 1318
Üye
 

"Access denied" hatası nedeninin erişim yetkileriniz ile ilgili olma ihtimali yüksek. NTFS izinlerini kontrol etmenizi öneririm. Aşağıdaki makalemiz yönlendirici olacaktır. İyi çalışmalar.

https://www.cozumpark.com/windows-server-2012-r2-ile-dosya-sunucularda-paylasim-ve-guvenlik-izinleri-bolum-3/

 
Gönderildi : 25/05/2023 00:09

Paylaş: