PDA

View Full Version : معادل file uploading



nassim0
دوشنبه 18 اردیبهشت 1391, 07:59 صبح
با سلام خدمت دوستان
روي يك برنامه تحت ويندوز كار مي كنم نياز دارم تا كاربران از تو درايوهاشون عكس مورد نظرشون رو انتخاب كنند . مثل fileuploading كه توي قسمت تحت وب وجود داره در قسمت تحت ويندوز معادلش ميشه FileSystemWatcher . طريقه ذخيره توي مسير خاص با اسم خاص تو بانك رو اگر ممكنه توضيح بديد
ممنونم

d_derakhshani
دوشنبه 18 اردیبهشت 1391, 09:28 صبح
اول اینکه دوست عزیز معدلش FileSystemWatcher نیست. این کنترل وظیفه اش پیگیری تغییرات فایلی در سطح یک درایو، دایرکتوری یا فایله.
انتخاب فایل با OpenFileDialog انجام میشه. حالا بعدش می خواید فایل رو مگه رو سروری آپ کنید؟(که می گید مثل File Uploader؟) اگه مشکل ذخیره دارید من اینجا نمی تونم جواب بدم چون سوال اون وقت مربوط به فروم C# یا VB.Net میشه

General-Xenon
دوشنبه 18 اردیبهشت 1391, 09:34 صبح
با سلام خدمت دوستان
روي يك برنامه تحت ويندوز كار مي كنم نياز دارم تا كاربران از تو درايوهاشون عكس مورد نظرشون رو انتخاب كنند . مثل fileuploading كه توي قسمت تحت وب وجود داره در قسمت تحت ويندوز معادلش ميشه FileSystemWatcher . طريقه ذخيره توي مسير خاص با اسم خاص تو بانك رو اگر ممكنه توضيح بديد
ممنونم
سلام
شاید من درست منظورتون رو متوجه نشدم
اما من اینطور برداشت کردم که شما در نظر داری، کاربرت بیاد یک فایل رو انتخاب کنه و شما اون فایل انتخاب شده رو جای دیگه ذخیره کنی
خوب این کد رو به یک Button نسبت بده
OpenFileDialog _op = new OpenFileDialog();
_op.Filter = "Format|*.Jpeg";
if (_op.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//in Moteghayer ro ham mitooni az tarighe Database Por koni
byte[] _fileContent = System.IO.File.ReadAllBytes(_op.FileName);
//Write New File
System.IO.File.WriteAllBytes("New Path" + ".pasvand", _fileContent);
}

امیدوارم این کد کمکت کرده باشه

nassim0
دوشنبه 18 اردیبهشت 1391, 13:09 عصر
سلام ممنونم یک بخش از مشکلم به لطف شما حل شد. من می خواستم توی بانک ذخیره کنم ممکنه بیشتر راهنماییم کنید . من فقط یکم linq بلدم .
System.IO.File.ReadAllBytes(_op.FileName); چطور از طریق دیتا بیس پر کنم ؟

d_derakhshani
دوشنبه 18 اردیبهشت 1391, 13:51 عصر
نوع فیلد رو image و یا varbinary(Max) بگیرید. بعد آرایه بایت خونده شده از فایل رو بهش تخصیص بدید

nassim0
دوشنبه 18 اردیبهشت 1391, 14:22 عصر
ممنون میشم اگر کدش رو بذارید . راحت تر متوجه میشم . چطوری تو بانک سیوش کنم

d_derakhshani
دوشنبه 18 اردیبهشت 1391, 14:33 عصر
از ADO.Net استفاده می کنید یا EF?

nassim0
دوشنبه 18 اردیبهشت 1391, 14:55 عصر
من مبتدیم اینا که شما نوشتید و نمی دونم . اما بانکم sql هستن و رابطمم linq

alonemm
دوشنبه 18 اردیبهشت 1391, 15:29 عصر
من مبتدیم اینا که شما نوشتید و نمی دونم . اما بانکم sql هستن و رابطمم linq

باسلام:

شما میتونید نام فایل مورد نظر رو به همراه یک شناسه ID در جدول پایگاه داده ذخیره کنید:

به مثال زیر دقت کنید:

// Create a new Order object.
Order ord = new Order
{
OrderID = 12000,
ShipCity = "Seattle",
OrderDate = DateTime.Now
// …
};

// Add the new object to the Orders collection.
db.Orders.InsertOnSubmit(ord);

// Submit the change to the database.
try
{
db.SubmitChanges();
}
catch (Exception e)
{
Console.WriteLine(e);
// Make some adjustments.
// ...
// Try again.
db.SubmitChanges();
}

d_derakhshani
دوشنبه 18 اردیبهشت 1391, 16:35 عصر
باسلام:

شما میتونید نام فایل مورد نظر رو به همراه یک شناسه ID در جدول پایگاه داده ذخیره کنید:

این روش برای وب کاربرد مناسب داره. ایشون گفتن برنامه تحت ویندوزه. پس بهتره تصویر در همون دیتابیس ذخیره شه.هر چند که فایل هم میشه(اما کاربر به راحتی می تونه فایل رو پاک کنه. اصولا در سیستم های ویندوزی تصویر در دیتابیس ذخیره. مخصوصا اگه به صورت کلاینت سروری باشه که دیگه چاره ای جز این نیست)

alonemm
دوشنبه 18 اردیبهشت 1391, 16:39 عصر
این روش برای وب کاربرد مناسب داره. ایشون گفتن برنامه تحت ویندوزه. پس بهتره تصویر در همون دیتابیس ذخیره شه.هر چند که فایل هم میشه(اما کاربر به راحتی می تونه فایل رو پاک کنه. اصولا در سیستم های ویندوزی تصویر در دیتابیس ذخیره. مخصوصا اگه به صورت کلاینت سروری باشه که دیگه چاره ای جز این نیست)

بله این روش سمت وب کاربرد داره.
اما میشه با استفاده از خصیصه های فایل و پوشه این کارو انجام داد که مثل فقط خواندنی باشه.


موفق باشید.

General-Xenon
سه شنبه 19 اردیبهشت 1391, 07:58 صبح
سلام ممنونم یک بخش از مشکلم به لطف شما حل شد. من می خواستم توی بانک ذخیره کنم ممکنه بیشتر راهنماییم کنید . من فقط یکم linq بلدم .
System.IO.File.ReadAllBytes(_op.FileName); چطور از طریق دیتا بیس پر کنم ؟

سلام
اینم کدهایی که درخواست کرده بودین
#region INSERT BUTTON
OpenFileDialog _op=new OpenFileDialog();
if (_op.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//SQL TABLE [TBIMAGE]
//---------------------------------------------
// 1.ID INT LOCK IDENTITY(1,1)
// 2.NAME NVarchar(50)
// 3.IMG Image
//---------------------------------------------
SqlConnection _cn = new SqlConnection("Connection");
SqlCommand _cm = new SqlCommand("INSERT INTO [TBIMAGE](NAME,IMG) VALUES(@name,@img)", _cn);
_cm.Parameters.AddWithValue("@name", System.IO.Path.GetFileName(_op.FileName));
_cm.Parameters.AddWithValue("@img", System.IO.File.ReadAllBytes(_op.FileName));
if (_cn.State != ConnectionState.Open) _cn.Open();
_cm.ExecuteNonQuery();
_cn.Close();
}
#endregion

#region Show Picture
SqlConnection _cn = new SqlConnection("Connection");
// Mohasebeye Akharin Recorde Sabt shode dar Table
SqlCommand _cm = new SqlCommand("SELECT TOP 1 [IMG] FROM [TBIMAGE] ORDER BY [ID] DESC", _cn);
if (_cn.State != ConnectionState.Open) _cn.Open();
if (_cm.ExecuteScalar() != null)
{
byte[] _b = _cm.ExecuteScalar();
//Zakhire dar file Digar
System.IO.File.WriteAllBytes("C://name.ext", _b);

//namayesh daroone Picture Pox
Image img = new Bitmap(new System.IO.MemoryStream(_b, 0, _b.Length));
//pictureBox1.image = img;
}
_cn.Close();
#endregion

nassim0
شنبه 23 اردیبهشت 1391, 06:59 صبح
ممنونم از لطفتون مشكلم تو اين قسمت برطرف شد . من نياز دارم يك گريد ويو اختصاصي ايجاد كنم يك تايپيك ايجاد كردم بهم خيلي لطف مي كنيد اگر توي حل اين مشكل هم كمكم كنيد

http://barnamenevis.org/showthread.php?341007-ايجاد-گريدويو-اختصاصي-در-application-asp.net