PDA

View Full Version : ایجاد لینک دانلود به صورت دینامیک



gaslakh
پنج شنبه 24 اسفند 1391, 17:09 عصر
با سلام .
کمکی میخواستم .
بنده صفحه وبی طراحی کرده ام که دارای بخش دانلود و آپلود هست .
میخواستم وقتی فایلی را در بخش آپلود آپلود می کنم پس از آپلود به صورت خودکار لینکی برای دانلود آن در بخش دانلود قرار داده شود .
آیا این عمل امکان پذیر هست ؟ اگر هست چگونه . خواهشمندم کمک کنید.
ممنون

gaslakh
جمعه 25 اسفند 1391, 14:15 عصر
جدا کسی بلد نیست؟ ماشاالله

clover
جمعه 25 اسفند 1391, 14:50 عصر
دو تا راهکار دارید:

1. با باز شدن صفحه ی دانلود ها لیست تمام فایل های موجود در پوشه ی فایل ها رو توسط توابع موجود دریافت کنید و لینک های دانلود رو از طریق اون لیست ایجاد کنید. مسلما هیچ کنترلی روی فایل ها نخواهید داشت.
2. موقع آپلود فایل اطلاعات مربوط به فایل (تاریخ آپلود، مسیر و ...) رو داخل دیتابیس ذخیره کنید. در صفحه ی دانلود ها هم از این بانک لیست رو بخونید و لینک های دانلود رو ایجاد کنید. این روشی هست که اکثرا مورد استفاده قرار می گیره.


جدا کسی بلد نیست؟ ماشاالله
لزوم معنیش این نیست، ممکنه سوال شما بسیار ساده باشه یا بار ها در موردش بحث شده باشه، لطفا قبل از ایجاد تاپیک جستجو کنید:
http://barnamenevis.org/showthread.php?331906-%DA%A9%D9%85%DA%A9-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%81%D8%A7%DB%8C%D9%84-...&p=1461882&viewfull=1#post1461882

m_akbari11
جمعه 25 اسفند 1391, 16:01 عصر
دوست عزیز بهترین راهکار ، راهی هستش که بنده در پایین به شما معرفی میکنم و روش استاندارد می باشد .

شما مشخصات فایل مورد نظرتون رو در پایگاه داده درج نمایید و شماره سطری که در پایگاه داده بهتون داده شد رو برگردونید به برنامه (بوسیله دستور @identitiy یا SCOPE_IDENTITY())

با توجه به اینکه آدرس ذخیره شدن فایلها در یک پوشه ای در سرور می باشد معمولا تغییر نمی کند ، بنابراین شما می توانید آن آدرس را + شماره ای که از پایگاه داده دریافت کردید + پسوند فایل ، پس از آپلود به کاربر ارائه کنید .
webAddress+FolderAddress +"/"+ IDFromDataBase +"."+ extension

مسیر رو میتوانید به راحتی و با دستور Server.mappath بدست بیارید و نامش رو هم که از پایگاه داده میگیرید و پسوندش رو هم که از خودش جدا میکنید .

برای جدا کردن پسوند فایل از کد زیر استفاده کنید :

public static string FileExtenssion(string FileName)
{
string ext = FileName.Substring(FileName.LastIndexOf(".") + 1, FileName.Length - FileName.LastIndexOf(".") - 1);
return ext;
}


با ابن کار ، اولین موضوع مهمی که اتفاق میفته اینه که فایلی با نام یکسان هرگز نخواهید داشت چون نام فایلها با شماره اتومات پایگاه داده تنظیم میشه و حرکت رو به جلو خواهد داشت.

رد گیری فایلها و حذف و ... اونها آسون میشه و به راحتی میتوانید اقدام به حذف یا ویرایش و ... نمایید و ابهام خاصی نخواهید داشت .
نام ها به یک روال مشخص در می آیند و اطلاعات اضافه تر آنها در پایگاه داده وجود خواهد داشت.


اگر روش خواندن شماره سطر رو می خواهید می توانیداز روش زیر در SP خود استفاده نمایید .




int rtnLegId = -1971;
(دستورات کانکشن و .... )
SqlParameter outPutVal = new SqlParameter("@ThisID", SqlDbType.Int);
outPutVal.Direction = ParameterDirection.Output;
cmd2.Parameters.Add(outPutVal);


if (outPutVal.Value != DBNull.Value) rtnLegId = Convert.ToInt32(outPutVal.Value);
{
//Label7.Text = rtnLegId.ToString();
return rtnLegId;
}



کدهای SP:

ALTER PROCEDURE dbo.InsertToUploads (........... ,@ThisID int OUTPUT )
{
}
AS
SET NOCOUNT ON;
insert into Tb_Uploads(...,....,....) values(@..... ,@.... ,@.....)
/* SET NOCOUNT ON */

SELECT @ThisID =SCOPE_IDENTITY()

gaslakh
جمعه 25 اسفند 1391, 20:38 عصر
ممنون :) کارتون درسته