ذخیره کردن چند فایل آپلود شده در بانک توسط Linq
سلام ، از یه FileUploadاستفاده کردم برای ذخیره چند عکس تو بانک ، مشکل اینجاست که فیلدهای عکس تو بانک که 10 تا هستن رو نمیتونم توی یک حلقه ،متناسب با تعداد عکس انتخاب شده مقدار دهی کنم.به عبارت دیگه اگه کاربر کمتر از ده تا عکس انتخاب کنه من راهی سراغ ندارم که بتونم فیلدها رو به همون تعداد مقدار دهی کنم. کاری که فکر میکردم این بود که اشتباهه و نمیشه.راهنمایی لطفا :
if(FuImage1.HasFiles)
{
int x = FuImage1.PostedFiles.Count();
string[] UploadedImages = new string[x];
int i = 0;
foreach(HttpPostedFile UploadedImg in FuImage1.PostedFiles)
{
UploadedImg.SaveAs(System.IO.Path.Combine(Server.MapPath("~/Pic/Mobile/") + DDLBrand.SelectedItem.Text, UploadedImg.FileName));
UploadedImages[i] = UploadedImg.FileName;
i += 1;
}
for (i = 0; i <= x - 1; i++)
{
Mobile_Images Mob_Img = new Mobile_Images()
{
Image1 = Convert.ToString(UploadedImages[i])
};
}
مشکل اصلی مربوط به وقتیه که می خوام این ده تا عکس رو تو بانک ذخیره کنم
اگر ده تا عکس برای هر آیتم بخوام ذخیره کنم باید به صورت استاتیک طی پروسه Linq اسم هر ده تا فیلد بانک رو ببرم و یکی یکی آیتم بهشون اختصاص بدم.اگر این کار رو بکنم و به جای ده تا عکس کاربر 5 تا انتخاب کنه یعنی به 5 تا فیلد باقی چیزی داده نشده و خطا صادر میشه.
الان کاری که می خوام بکنم اینه که اولا تعداد عکس هاس selectشده رو مشخص کنم (که مشکلی نیست .)بعد به همون تعداد مقدار دهی به فیلد های بانک توسط تکنیک Linq بانک داشته باشم
مثلا تو کد بالا قصد داشتم به تعداد ورودی تو حلقه از فیلد های بانک استفاده کنم و بهشون مقدار بدم که حین نوشتن فهمیدم اشتباهه و نمیشه
2 پاسخ
به نظر من مشکل از ساختار بانک شما هست، من برای اینکار یه راهکار میدم، امیدوارم مشکلتون حل بشه، شما برای تصاویری که داری، 10 تا فیلد درست نکن، یه جدول دیگه درست کن که Relation داری با جدولی که میخوای براش عکس داشته باشی، برای مثال:
CREATE TABLE Contents
(
[Id] INT IDENTITY NOT NULL PRIMARY KEY,
[Title] NVARCHAR(200) NOT NULL,
[Text] NVARCHAR(MAX) NOT NULL
);
GO
CREATE TABLE ContentImages
(
[Id] INT IDENTITY NOT NULL PRIMARY KEY,
[ContentId] INT NOT NULL REFERENCES Contents(Id),
[ImageIdentifier] NVARCHAR(32) NOT NULL,
[FileName] NVARCHAR(256) NOT NULL,
[ContentType] NVARCHAR(100) NOT NULL
);
GO
با ساختار بالا، میتونید هر تعداد تصویر که تصمیم داشته باشید اضافه کنید، از صفر تا بی نهایت.
تو مرحله بعدی، وقتی فایلی آپلود میشه، یه Identifier مثلاً یه Guid جدید برای فایل بسازید و فایل رو با اون شناسه تو فولدری که خودتون میدونید ذخیره کنید. بعد شناسه اون فایل رو تو جدول مثلاً ContentImages ذخیره کنید.
همونطور که جناب احمدی گفتن قطعا طراحی جدول بانک شما اشتباهه و حتما به روش جناب احمدی عمل کنید