-
نمایش عکس از روی سرور
سلام دوستان بنده یک برنامه کلاینت سرور درست کردم بسیار سادست
برای بک گراند برنامه ی کلاینتم می خوام یک عکس رو از سرور من نشون بده.
اگر فرض کنیم IP : 47.221.21.290 سرور این باشد و عکس در پوشه ی c:/background/back.png باشد چطور این کارو بکنم.
من از indy client , server استفاده کردم.
دوستان نمی خوام دانلود بشه و جای ذخیره بشه بعد نمایش بده.
اینطور نمی خوام.
با هر بار اجرا به اون آدرس دسترسی پیدا کنه و نمایش بده.
:لبخندساده:
عید بر شما مبارک
-
نقل قول: نمایش عکس از روی سرور
راه خیلی زیاده
اگه امنیت برات مهم نیست می تونی مستقیم با دادن آدرس آی پی و مسیر ، عکس رو باز کنی
در غیر این صورت بایداز FileStream استفاده کنی
قبلا یک تاپیک در مورد توی قسمت شبکه ایجاد کرده بودیم که کلا در همین مرد بحث میکنه
یک سرچ کوچولو پیداش میکنی
-
نقل قول: نمایش عکس از روی سرور
هادی جان من یک ساعت و نیمه دارم میگردم پیدا نشد
لطف کن یک راهنمایی بکن یا اگه لینکشو داری برای بنده هم بذار
تشکر
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
نوشته شده توسط
hadisalahi2
راه خیلی زیاده
اگه امنیت برات مهم نیست می تونی مستقیم با دادن آدرس آی پی و مسیر ، عکس رو باز کنی
در غیر این صورت بایداز FileStream استفاده کنی
قبلا یک تاپیک در مورد توی قسمت شبکه ایجاد کرده بودیم که کلا در همین مرد بحث میکنه
یک سرچ کوچولو پیداش میکنی
سلام اقای هادی
با استفاده از IP تصویر باز نمی شود بهتر است اگر در برنامه اش از sql server استفاده می کند از امکانان اسکیوال سرور بهر ببرد مثال زیر
SELECT MyImage FROM
OPENROWSET(BULK N'E:\1.jpg', SINGLE_BLOB) as tempImg
دستور بالا تصویر موجود در درایو E:\ بر روی سرور را select می کند
1) اگر شما از کلاینت به سرور وصل بشوید براحتی میتوانید در محیط برنامه نویسی (دلفی / سی شارپ یا هر زبان دیگر) تصویر را نمایش بدهید
من یک مثال ساده برای دلفی قرار می دهم بقیه با خودتان
Procedure ShowPFullImage;
var
BlobStream: TStream;
JPEGImage: TJPegImage;
begin
Try
if MainQImageThumbnail.AsString <> '' Then
Begin
BlobStream := MainQ.CreateBlobStream(MainQImageThumbnail,bmRead) ;
Try
JPEGImage := TJPEGImage.Create;
try
JPEGImage.LoadFromStream(BlobStream);
Image1.Picture.Assign(JPEGImage);
finally
JPEGImage.Free;
end;
finally
BlobStream.Free;
end;
End ;
Except
End;
End;
-
نقل قول: نمایش عکس از روی سرور
پیشنهاد میکنم ، برای راحتی خودتون و همچنین پیاده سازی راحتتر و همچنین خاصیت Resume از وب سرور استفاده کنید.
یعنی چی؟
یه وب سرور مثل iis رو سرورتون نصب کنید و با کامپوننت Idhttp اقدام به دانلود و لود استریم به صورت مستقیم در شی ایمیج کنید.
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
سلام اقای هادی
با استفاده از IP تصویر باز نمی شود بهتر است اگر در برنامه اش از sql server استفاده می کند از امکانان اسکیوال سرور بهر ببرد مثال زیر
سلام بر جنام ولی زاده گل
چرا عزیزم باز میکنه ، من خودم تست کردم
البته با اسم سرور بهتر جواب میده
در ویندوز 7 یک کم امنیت بالا رفته و موقع باز کردن یوزر و پس میخواد
منم فولدر مورد نظرم رو مپ درایو میکنم و بعدش که کارم تموم شد دیسکانکت میکنم
نقل قول:
یه وب سرور مثل iis رو سرورتون نصب کنید و با کامپوننت Idhttp اقدام به دانلود و لود استریم به صورت مستقیم در شی ایمیج کنید.
دلاور شما قرار بود یک چند تاپیک آموزشی بزارید ما حاش رو ببریم
اونا که نشد
لااقل این مبحث رو چند تا منبع آموزشی بده یه نگاهی بندازیم :لبخند:
-
نقل قول: نمایش عکس از روی سرور
برای دریافت فایل عکس از روی سرورهای ویندوزی ، 3 روش خوب و کار آمد هست.فعلا کاری به sql نداریم.
1-مدیریت ارسال و دریافت فایل توسط فایل استریم: که در این روش به علت اینکه مدیریت ارسال و دریافت کاملا با عهده برنامه نویس هست و همچنین ارسال و دریافت در یک کانکشن و خاصیت ادامه دانلود به صورت ذاتی وجود ندارد ، اصلا پیشنهاد نمیشود. که در این روش باید از پروتکلهای TCP و یا UDP استفاده کنیم.
2-ارسال توسط وب سرور و دریافت در برنامه : در این روش هم ، مانند روش اول به صورت فایل استریم عکس و فایل ارسال و دریافت میشود، اما با این تفاوت که برنامه سمت سرور رو دیگه برنامه نویس مدیریت نمیکند و ، برنامه سمت سرور رو برنامه نویسان بزرگ کمپانی هایی مثل مایکروسافت زحمتش رو برامون میکشند.:قلب: و از پروتکل http استفاده میشود.
این وب سرور ها (مانند IIS - Wamp _ Xamp ,...)امکانات بزرگی دارند که اگر بخواهیم در روش اول ، اون رو پیاده سازی کنیم ، زمان بسیار زیادی رو تلف کردیم. و باز هم به بهینه و اطمینانی که این وب سرورها دارند نمیرسیم.
امکانات :
1- خاصیت تکه تکه دیافت کردن فایل
2- خاصیت توقف و ادامه دریافت فایل
3- ایجاد محدودیت دریافت مقدار بسته های دریافتی
و...
3- ارسال و دریافت فایل توسط Ftp سرور :
در این روش هم باید یک Ftp سرور سمت سرور راه اندازی کرده و سپس درخواست دریافت فایل را از سمت کلاینت داده و استریم دریافتی را در شی ایمیج لود کنیم.
پیاده سازی :
روش اول : کافیه برنامه ای سمت سیستم دریافت کننده در حال اجرا باشد : روی پورتی که Listen هست، درخواست دریافت فایل رو گرفته و فایل رو دریافت میکند. و سیستم ارسال کننده هم اقدام به ارسال کند. توسط TCP
سمت ارسال کننده :
uses jpeg;
procedure TForm1.Button1Click(Sender: TObject);
var
TcpClient: TIdTCPClient;
MS: TMemoryStream;
begin
TcpClient := TIdTCPClient.Create();
MS := TMemoryStream.Create;
try
with TcpClient do
begin
port := 1010;
host := '127.0.0.1';
ReadTimeout := -1;
end;
TcpClient.Connect;
try
Ms.LoadFromFile('c:\1.jpg');
MS.Position := 0;
TcpClient.IOHandler.WriteLn(IntToStr(Ms.Size));
TcpClient.IOHandler.WriteBufferOpen;
TcpClient.IOHandler.Write(Ms);
TcpClient.IOHandler.WriteBufferClose;
finally
TcpClient.Disconnect;
end;
finally
TcpClient.Free;
MS.Free;
end;
end;
سمت دریافت کننده :
uses jpeg;
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
Jpg:TJPEGImage;
PicSize:Integer;
MemRecieveStreamPic:TMemoryStream;
begin
Jpg:=TJPEGImage.Create;
MemRecieveStreamPic:=TMemoryStream.Create;
try
PicSize :=strtoint( AContext.Connection.IOHandler.ReadLn());
AContext.Connection.IOHandler.ReadStream(MemReciev eStreamPic,PicSize,false);
MemRecieveStreamPic.Position:=0;
Jpg.LoadFromStream(MemRecieveStreamPic);
Image1.Picture.Bitmap.Assign(jpg);
finally
MemRecieveStreamPic.Free;
Jpg.Free;
end;
end;
روش دوم : در ابتدا باید یک وب سرور نصب و راه اندازی کنیم . که من IIS و یا Wamp رو پیشنهاد میکنم
پس از نصب ، و تنظیم پورت برنامه و Home Dir فایلهای مورد نظر را در پوشه های ایجاد شده در مسیر Home وب سرور قرار میدهیم.
بوسیله کامپوننت Idhttp عکس رو دانلود و در شی ایمیج مستقیما لود میکنیم.
uses JPEG,pngimage;
procedure ShowImageFromStream(AImage: TImage; AData: TStream);
var
JPEGImage: TJPEGImage;
begin
AData.Position := 0;
JPEGImage := TJPEGImage.Create;
try
JPEGImage.LoadFromStream(AData);
AImage.Picture.Assign(JPEGImage);
finally
JPEGImage.Free;
end;
end;
procedure ShowPngImageFromStream(AImage: TImage; AData: TStream);
var
pngimage: TPngImage;
begin
AData.Position := 0;
pngimage := TPngImage.Create;
try
pngimage.LoadFromStream(AData);
AImage.Picture.Assign(pngimage);
finally
pngimage.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ms: TMemoryStream;
j: TJPEGImage;
begin
ms := TMemoryStream.Create;
try
IdHTTP1.Get(Edit1.Text, ms);
ShowPngImageFromStream(Image1, ms);
finally
ms.Free;
end;
end;
روش سوم :
uses jpeg;
procedure TForm1.Button1Click(Sender: TObject);
var
Ftp: TIdFTP;
MS: TMemoryStream;
Jpg:TJPEGImage;
begin
MS := TMemoryStream.Create;
Ftp := TIdFTP.Create(nil);
Jpg:=TJPEGImage.Create;
try
with Ftp do
begin
ProxySettings.ProxyType := fpcmNone;
ProxySettings.Port := 21;
Host := '127.0.0.1';
Username := 'username';
password := 'pass';
end;
Ftp.Connect;
try
Ftp.Get('127.0.0.1\Pic\1.jpg', MS);
MS.Position := 0;
jpg.LoadFromStream(MS);
Image1.Picture.Assign(jpg);
finally
Ftp.Quit;
Ftp.Disconnect
end;
finally
Ftp.Free;
MS.Free;
Jpg.free;
end;
end;
این هم آموزش یکی از قسمتهایی که قولش رو داده بودم.:چشمک:
-
نقل قول: نمایش عکس از روی سرور
در تکمیل صحبتهای Gold (:قلب:) در مورد روش FTP باید عرض کنم که اگه با کامپوننت های Indy کار کنیم قابلیت Resume میتونیم داشته باشیم ولی فایل رو نمیتونیم به صورت تکه تکه(مثل Internet Download Manager) دریافت کنیم. ولی اگه از کامپوننت های رایگان و کد باز Overbyte ICS استفاده کنیم این امکان رو هم داریم. :چشمک:
یکی از روشهای خوب برای اینکه بفهمیم فایل به درستی دریافت میشه استفاده از فریمورک DataSnap و استفاده از مبحث فیلترها در اون هست که زیاد جای توضیح داره و اگه کسی بخواد این مورد رو یاد بگیره باید زمان بیشتری صرف کنه.
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
نوشته شده توسط
sajioo
هادی جان من یک ساعت و نیمه دارم میگردم پیدا نشد
لطف کن یک راهنمایی بکن یا اگه لینکشو داری برای بنده هم بذار
تشکر
داداش این لینک اون صفحه هستش
https://barnamenevis.org/showthread.php?420434-%D8%B1%D9%88%D8%B4-%DA%A9%D9%BE%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-
%D9%81%D8%A7%DB%8C%D9%84-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9-%DA%AF%D8%B0%D8%A7%D8%B4%D8%AA%D9%86-%D9%BE%D9%88%D8%B4%D9%87
توضیحاتی که داش محمد داد خیلی عالیه من دارم روش کار میکنم
ببینم کدوم از همه بهتر جواب میده
اگه تکمیل بشه حتما میزارم تا بچه ها هم استفاده کنند
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
2-ارسال توسط وب سرور و دریافت در برنامه : در این روش هم ، مانند روش اول به صورت فایل استریم عکس و فایل ارسال و دریافت میشود، اما با این تفاوت که برنامه سمت سرور رو دیگه برنامه نویس مدیریت نمیکند و ، برنامه سمت سرور رو برنامه نویسان بزرگ کمپانی هایی مثل مایکروسافت زحمتش رو برامون میکشند.
:قلب:
و از پروتکل http استفاده میشود.
داداش میشه هم سیستم کلاینت و هم سرور رو رمی یک سرور پیاده سازی کرد دیگه؟
یعنی نیازی نیست حتما دو تا سسیتم برای این کار باشه؟
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
اگه تکمیل بشه حتما میزارم تا بچه ها هم استفاده کنند
دمت گرم
نقل قول:
داداش میشه هم سیستم کلاینت و هم سرور رو رمی یک سرور پیاده سازی کرد دیگه؟
یعنی نیازی نیست حتما دو تا سسیتم برای این کار باشه؟
آره میشه مشکلی نیست
-
1 ضمیمه
نقل قول: نمایش عکس از روی سرور
باید عرض کنم بنده حدود یکسال هست روی آرشیو عکس فیلم وصدا کار می کنم خیلی این روش ها را تست کردم بنظر من بهترین روش برای بارگذاری و نمیش عکس از روی سرور همان استفاده از فایل استریم اسکیوال 2008R2 به بعد است در روش که آقای هادی فرمودند تقریبا از 7 یا 8 ماه قبل یک تبادل اطلاعات داشتیم به نظر من ناکارآمد است چون باید بخشی از دسترسی های سرور را به کاربر بدهی که منطقی نیست من حالا در بخش آرشیو فیلم در دو جا بیش از 1 میلیون تصویر را مدیریت می کنم و بروی شبکه نصب شده است راحت ترین و کارا»د ترین روش است البته به نظر بنده
باز من نظرات دیگر دوستان را مطالعه خواهم کرد .
این هم یک نمونه از فرم تصویر
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
نوشته شده توسط
Gold
وجدانا به اندازه معلوماتتون نظر بدید..
سلام استاد
من ادعا ندارم سواد برنامه نویسی دارم و معلوماتهم خیلی کم است شما می توانید از تعداد تاپیک ها تشخیص بدهید و بی جهت تاپیک ایجاد نمی کنم ولی من هرچه فکر می کنم شما به چه روشی این مطلب را فرمودید عقلم بجای نرسید اگر منظورتان این است که شما مپ داریو درست کنید و یا از قابلیت $C مشابه استفاده بشه فکر می کنم امنین پایین هست اگه روش که فرمودید واضح تر بیان کنید ما نیز بهره ببریم.
اگر خاطرتان باشد یک بار این موضوع در این تاپیک مطرح شد .
شما همان نظر مطرح کرده بودید . ضعف امنیت ویندوز
دقیقا جمله شماست
"یکی از مشکلات امنیتی ای که در ویندوز وجود دارد اینه که درایو های سیستم بطور پیش فرض به اشتراک گذاشته می شوند و از طریق تایپ علامت $ پس از نام درایو می توان به کلیه محتویات آن دسترسی داشت.مثلا با تایپ $c در نوار آدرس می توان وارد این درایو شد.
روش فعال و غیر فعال کردن اشتراک پیش فرض(default share) در ویندوز xp و سون یک مقدار متفاوت است. ولی از طریق دستورات command prompt در ویندوز xp و سون یکسان است. این دستورات را هم می توان در run وارد کرد و هم در CMD . برای غیر فعال کردن یک share میتوان از دستور زیر استفاده کرد"
من با استناد به این نطر شما عرض کردم امکان ندارد حالا شاید برداشت من اشتباه بوده باشد من دقیقا براساس اخرین گفته های شما روش فایل استریم اس کیوال سرور را مطالعه و ادامه دادم
-
نقل قول: نمایش عکس از روی سرور
بچه ها اینجا چه استاد و چه شاگرد همه رفیقیم
پس این تعارفات رو کنار بزاریم و به جاش یک کار واقعا عملی انجام بدیم تا هم به درد خودمون بخوره و هم به درد بقیه دوستان.
این وسط شاید صوابی هم نصیب بشه برای آخرتمون :خجالت:
من دیشب با مهندس ولی زاده صحبت کردم
به نظر من هر روشی مزایا و معایب خودش رو داره.
در مورد روشی که جناب ولی زاده میفرمایند
به نظر من مزایاش :
1- همگامی داده های ذخیر ه شده با محتوا هستش (یعنی مثلا خود تصاویر با اطلاعات داخل جداول)
2- سرعت قابل قبوله ، چون به صورت استریم کار میکنه.
3- عدم نیاز به کدهای زیاد و پیچیه توسط برنامه نویسه ، چون این کارها رو خود SQl Server انجام میده.
اما معایبش:
1- محدود بودن به نسخه خاص Sql Server
2- سنگین بودن و مدت زمان نسبتا طولانی نصب Sql Server هستش.
اما در زمانی که امنیت خیلی زیاد اهمیت نداشته باشه ، به نظر من ساده ترین راه ، استفاده از همون درایو های شیر شده شبکه و ایجاد Map Drive و خواندن و نشتن مستقیم در پوشه مورد نظر هستش
من به شخصه از این روش تا الان استفاده میکردم.
اما روشی که محمد میگه رو هنوز تست نکردم ولی با این توضیحات حتما روش کار آمدی هستش
من میخوام این روش رو تست کنم.
از دوستان هم میخوام ، هر کدوم میتونند روی این موضوع کارکنند تا اگه خدا بخواد ، یک نمونه برنامه کامل اینجا بزاریم تا این بحث رو برای همیشه به نتیجه ای برسونیم
چون تاپیک هایی که در این مورد دیدم خیلی خیلی زیاده و متاسفانه همه نیمه کاره رها شده.
امیدوارم این تاپیک رو نیمه کاره رها نکنیم.
-
نقل قول: نمایش عکس از روی سرور
سلام
من فکر می کنم یک سوء تفاهم پیش آمده باشد .
من یشتر بروی WinApp نمرکز دارم و کار را روی آن بستر انجام می دهم ولی فکر می کنم با مباحث بالا دوست بیشتر بروی WebApp متمرکز هستند .
ولی اقای هادی منظور من این روش نیست "
1- همگامی داده های ذخیر ه شده با محتوا هستش (یعنی مثلا خود تصاویر با اطلاعات داخل جداول)"من به هیچ عنوان تصاویر را داخل دیتابیس ذخیره نمی کنم من مسیر را ذخیره می کنم
علی الحال از هکه دوستان تشکر می کنم
-
نقل قول: نمایش عکس از روی سرور
آقای خرسند؛
SELECT MyImage FROM
OPENROWSET(BULK N'E:\1.jpg', SINGLE_BLOB) as tempImg
روی خیلی از سیستمهای سرور دستور مزبور توقیف است.
نقل قول:
To use the BULK option requires ADMINISTER BULK OPERATIONS permission.
خیلی از سرورها، از جمله سرور های عادی شرکت ها اجازه اجرای چنین دستوراتی رو سلب می کنند.
دستوراتی مثل OpenRowSet و ارسال ایمیل و Bulk و ...
نقل قول:
من به هیچ عنوان تصاویر را داخل دیتابیس ذخیره نمی کنم من مسیر را ذخیره می کنم
اگر فایل در مقصد مورد نظر به هر دلیلی تغییر کرد یا حذف شد، تکلیف چیست؟
بهتره در این موارد اگر قراره اس کیو الی کار انجام بشه، از طریق FileStreaming خود اس کیو ال انجام بشه..
و مورد دیگه، اگر برنامه ما اصلا نیازی به اس کیو ال نداشت چی؟ مثلا با PostGre یا سیستم های دیگه..
هادی؛
نقل قول:
توضیحاتی که داش محمد داد خیلی عالیه من دارم روش کار میکنم
محمد کیه؟!
هر روشی مزایای خودش رو داره. مثلا برای برنامه 100 تومانی فولدری بزنید بره :لبخند: (جدی نگیریدا)
برای کارهای دیتابیسی تحت اس کیو ال و با حجم و تعداد بالا بهترین گزینه FileStreaming هست.
برای حجم و تعداد کم روش ذخیره خود فایل در فیلد بد نیست. روش ذخیره مسیر رو هم اصلا جالب نمی دونم.
برای استفاده از روش انتقال فایل با InDy یا اشیای مشابه، باید یک فولدری رو قفل کنید تا اختصاصی برنامه شما بشه و کسی نتونه به اجزای درونش دست برنه.
اگر برنامه قراره بعدا گسترش پیدا کنه، بهتره براش سرویس، یا وب سرویس مناسب هم نوشته بشه. اما برای برنامه های کوچیک می شه از همون روش فولدری استفاده کرد.
برادر حمزه، مشکل فولدری رو هم توضیح بدید فیض می بریم.
:متفکر:
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
من به هیچ عنوان تصاویر را داخل دیتابیس ذخیره نمی کنم من مسیر را ذخیره می کنم
آقا محمد رضای گل ، من گفتم مزیتشه
ولی نگفتم شما استفاده میکنی که ... :لبخند:
یوسف جان من اسم هر کی رو ندونم بهش میگم محمد :لبخند:
حالا چون گفتی فهمیدم ، که محمد همون حمزه خودمونه :قهقهه:
نقل قول:
اگر فایل در مقصد مورد نظر به هر دلیلی تغییر کرد یا حذف شد، تکلیف چیست؟
اگه آدرس فایلها رو به صورت نسبی ذخیره کنیم ، فکر نکنم مشکلی پیش بیاد
من به شخصه این کار و میکنم و مشکلی نداشتم تا الان
در ضمن اون چه سروریه که هر کی دلش بخواد بره و فایلهای توی اون رو جابجا کنه :متفکر:
اون که دیگه سیستم سرور نیست ، بیشتر شبیه کاروانسراست :لبخند:
نقل قول:
بهتره در این موارد اگر قراره اس کیو الی کار انجام بشه، از طریق FileStreaming خود اس کیو ال انجام بشه..
این روش خوبه اما دو تا مشکل بزرگ داره
اول اینکه حجم بانک اطلاعاتی خیلی بالا میره
و دوم اینکه موقع ذخیره سازی اینقدر sql Server پوشه های تو در تو میسازه که بری توش دیگه فکر نکنم راه خروج رو پیدا کنی.
نقل قول:
هر روشی مزایای خودش رو داره. مثلا برای برنامه 100 تومانی فولدری بزنید بره
:لبخند:
(جدی نگیریدا)
این رو خیلی باهات موافقم
اما برای 100 تومن حیفه آدم کلا به سمت سیستم بره تا اینکه بخواد برنامه بنویسه :قهقهه:
نقل قول:
برای استفاده از روش انتقال فایل با InDy یا اشیای مشابه، باید یک فولدری رو قفل کنید تا اختصاصی برنامه شما بشه و کسی نتونه به اجزای درونش دست برنه.
اگر برنامه قراره بعدا گسترش پیدا کنه، بهتره براش سرویس، یا وب سرویس مناسب هم نوشته بشه. اما برای برنامه های کوچیک می شه از همون روش فولدری استفاده کرد.
ما هم به این روشس علاقمند شدیم
اما روش کار رو بلد نیستیم
اصلا نمیدونیم از کجا شروع کنیم :افسرده:
حمزه (همون محمد) یالا یالا
آمورش میخوایم یالا :تشویق:
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
اگه آدرس فایلها رو به صورت نسبی ذخیره کنیم ، فکر نکنم مشکلی پیش بیاد
من به شخصه این کار و میکنم و مشکلی نداشتم تا الان
در ضمن اون چه سروریه که هر کی دلش بخواد بره و فایلهای توی اون رو جابجا کنه
:متفکر:
اون که دیگه سیستم سرور نیست ، بیشتر شبیه کاروانسراست
:لبخند:
ربطی به نسبی بودن نداره. خود فایل رو جابجا می کنند!
آی تی من های بی سواد عزیز من، معلومه با این شرکت های بزرگ سر و کله نزدی ها.
و برنامه های جانبی روی سرور، معمولا شرکت ها فقط از یک برنامه یا از یک شرکت استفاده نمی کنند.
نقل قول:
این روش خوبه اما دو تا مشکل بزرگ داره
اول اینکه حجم بانک اطلاعاتی خیلی بالا میره
و دوم اینکه موقع ذخیره سازی اینقدر sql Server پوشه های تو در تو میسازه که بری توش دیگه فکر نکنم راه خروج رو پیدا کنی.
حجم بانک بالا نمی ره، چون اصلا در بانک ذخیره نمی شه. فایله کنار دی بی.
شما به پوشه هاش کار نداشته باش!
مهم اینه که جلوی دستکاری فایل ها رو می گیره.
به هر جهت برادر حمزه توضیحات مکفی رو می دند ان شا الله :لبخند:
-
نقل قول: نمایش عکس از روی سرور
IdHTTP1.Get(Edit1.Text, ms);
آقا من نحوه ی آدرس دادنشو نفهمیدم.
چه طور باید آدرس داد؟
من فقط یک ip سرور دارم و بس.
یکی با مثال به بنده بگه لطفا؟
دوستان حل شد iis نصب نبود
-
نقل قول: نمایش عکس از روی سرور
متاسفانه من هم کاری از پیش نبردم
اصلا کلا نمیفهمم الان تصاویر کجا ارسال میشه و چطوری باید لود بشه.
اگه حمزه جان یک ندا این دوستان درمانده را دریابند ، لطف بزرگی به بشریت کرده اند :لبخند:
-
نقل قول: نمایش عکس از روی سرور
دقیقا مشکل کجاست.
احساس میکنم یه مقدار قسمت شبکتون ضعیفه.
شما بپرسید من جواب میدم تا روشن بشید.
-
نقل قول: نمایش عکس از روی سرور
حمزه جان ببین داداش
من میرم Control Panel --> Add Remove Program و از اونجا IIS رو نصب میکنم
خوب حالا اون دو تا تیکه کد رو چیکار کنم؟
ببخشید که خیلی بیسوادم داداش
آخه توی این مبحث من تا الان حتی یک خط کد هم ننوشتم
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
نوشته شده توسط
hadisalahi2
حمزه جان ببین داداش
من میرم Control Panel --> Add Remove Program و از اونجا IIS رو نصب میکنم
خوب حالا اون دو تا تیکه کد رو چیکار کنم؟
ببخشید که خیلی بیسوادم داداش
آخه توی این مبحث من تا الان حتی یک خط کد هم ننوشتم
زمانی که iis رو نصب کردید ، سیستمتون تبدیل میشه به یک وب سرور.
الان وقتی رو خود سیستمتون ، در مرورگر بنویسید 127.0.0.1 باید صفحه اول iis رو ببینید.
خوب حالا برید تو تنظیمات iis و ببینید HomDirectory دقیقا کجا تعریف شده.
مثلا مسیر C:\Inetpub\wwwroot تعریف شده.
خوب پس معلوم میشه هر فایلی رو ما در این مسیر بگزاریم. وب سرویس بهمون بر میگردونه.
مثال :
فایلی به اسم ali.exe رو بریزید در این مسیر.
حالا کافیه تو مرورگرتون بنویسید :
http://127.0.0.1/ali.exe
میبینید که برنامه IDM (اگه نصب باشه) میاد بالا و میخاد که بره برای دانلود.
با این توضیحات باید متوجه بشید که سناریو به چه شکلیه.
حالا با کدهایی که من قرار دادم میتونید این فایل رو دانلود کنید.
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
الان وقتی رو خود سیستمتون ، در مرورگر بنویسید 127.0.0.1 باید صفحه اول iis رو ببینید.
من وقتی این آدرسش رو میزنم ازم یوزر پس میخواد
باید کدوم یوزر پس رو وارد کنم؟
نقل قول:
خوب پس معلوم میشه هر فایلی رو ما در این مسیر بگزاریم. وب سرویس بهمون بر میگردونه.
چطوری اول آپلودش کنیم که بعد بخوایم دانلودش کنیم؟
-
نقل قول: نمایش عکس از روی سرور
دوستان عکس های png رو من راحت میارم اما
عکس های که jpg یا jpeg ذخیره میشن رو وقتی می خوام در برنامه سمت کلاینت باز کنم پیام میده
jpeg error #53
فکر کنم نحوه ذخیره فایل jpg مشکل داره چون وقتی یک jpg دیگه رو از خود ویندوز آپ کردم (دستی) رو سرور و تو برنامه کلاینت تست کردم جواب داد.
نظر شما چیست دوستان؟
:متفکر:
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
نوشته شده توسط
hadisalahi2
من وقتی این آدرسش رو میزنم ازم یوزر پس میخواد
باید کدوم یوزر پس رو وارد کنم؟
چطوری اول آپلودش کنیم که بعد بخوایم دانلودش کنیم؟
این سوالتون دیگه ربطی به دلفی نداره. بهتره روش کانفیگ iis رو در گوگل سرچ و انجام بدید.
نقل قول:
فکر کنم نحوه ذخیره فایل jpg مشکل داره چون وقتی یک jpg دیگه رو از خود ویندوز آپ کردم (دستی) رو سرور و تو برنامه کلاینت تست کردم جواب داد.
نظر شما چیست دوستان؟
اول اینکه زحمت بکشید و کدتون رو قرار بدید. دوم اینکه کتابخانه های مربوطه رو Uses کردید.؟
-
نقل قول: نمایش عکس از روی سرور
نقل قول:
اول اینکه زحمت بکشید و کدتون رو قرار بدید.
از کدهای خودتون استفاده کردم
سمت کلاینت برای ارسال عکس به سرور
varMS: TMemoryStream;beginMS := TMemoryStream.Create;tryform1.OpenDialog1.Execute; if form1.OpenDialog1.FileName<>'' then begin Ms.LoadFromFile(form1.OpenDialog1.FileName);
MS.Position := 0; form1.IdTCPClient1.IOHandler.WriteLn('photo|'+User Name+'|'+IntToStr(Ms.Size)); form1.IdTCPClient1.IOHandler.WriteBufferOpen; form1.IdTCPClient1.IOHandler.Write(Ms); form1.IdTCPClient1.IOHandler.WriteBufferClose; end;finally MS.Free;
end;end;
سمت کلاینت برای نمایش عکس
var ms: TMemoryStream; j: TJPEGImage;begin ms := TMemoryStream.Create; tryIdHTTP1.Get(Edit1.Text,ms);
ShowImageFromStream(Image1, ms); finally ms.Free; end;end;
سمت سرور برای ذخیره عکس
Jpg:=TJPEGImage.Create; MemRecieveStreamPic:=TMemoryStream.Create; try PicSize :=strtoint( command[2]); user:= command[1]; AContext.Connection.IOHandler.ReadStream(MemReciev eStreamPic,PicSize,false); MemRecieveStreamPic.Position:=0; Jpg.LoadFromStream(MemRecieveStreamPic); Image1.Picture.Bitmap.Assign(jpg);
finally MemRecieveStreamPic.Free; Jpg.Free; Image1.Picture.SaveToFile('C:\inetpub\wwwroot\prof ile\'+command[1]+'.JPG'); str:='photo|1|'+user+'|'; end;
نقل قول:
دوم اینکه کتابخانه های مربوطه رو Uses کردید.؟
بله استفاده کردم:متفکر:
-
نقل قول: نمایش عکس از روی سرور
دوستان چکار کنیم بنظرتون؟:متفکر:
-
نقل قول: نمایش عکس از روی سرور
فایل رو به صورت باینری ارسال کنید و در برنامه به وسیله API ویندوز نمایش بدید.