View Full Version : چک کردن وجود داشتن فایل در سرور
niksalehi
پنج شنبه 12 اردیبهشت 1392, 10:57 صبح
سلام دوستان...
میخواستم ببینم چطوری میشه بفهمیم مثلا این فایل: www.google.com/1.jpg (http://www.google.com/1.txt) روی سایت وجود داره یا نه؟
مبین رنجبر
پنج شنبه 12 اردیبهشت 1392, 11:11 صبح
شما میتونید با استفاده از متد Shell دستور curl رو به صورت Hidden اجرا کنید :
Shell "cmd.exe curl www.google.com/1.jpg > C:\tmp.txt",vbHidden
این دستور خروجی رو در فایلی در درایو C شما با نام tmp.txt ذخیره میکند و شما تنها کافیست خط مربوط به عنوان صفحه که عبارت 404 Not Found هست رو بخونید.
niksalehi
پنج شنبه 12 اردیبهشت 1392, 14:23 عصر
ممنون، اما با استفاده از این کدی که دادین فقط cmd باز میشه، اتفاق دیگه ای نمیفته!
مبین رنجبر
پنج شنبه 12 اردیبهشت 1392, 14:29 عصر
ممنون، اما با استفاده از این کدی که دادین فقط cmd باز میشه، اتفاق دیگه ای نمیفته!
درایو C رو چک کنید ببینید فایل tmp.txt ساخته شده یا خیر
niksalehi
پنج شنبه 12 اردیبهشت 1392, 14:41 عصر
نه فایلی ساحته نشده، درایو هم عوض کردم و امتحان کردم، باز هم ساخته نشد!
مبین رنجبر
پنج شنبه 12 اردیبهشت 1392, 14:46 عصر
نه فایلی ساحته نشده، درایو هم عوض کردم و امتحان کردم، باز هم ساخته نشد!
خود کامندلاین رو باز کنید و دستور curl رو وارد کنید.ببینید این پیغام نمایش داده میشه یا خیر :
curl: try 'curl --help' for more information
niksalehi
پنج شنبه 12 اردیبهشت 1392, 14:53 عصر
این پیامو میده:
C:\Windows\system32>curl
'curl' is not recognized as an
operable program or batch file.
مبین رنجبر
پنج شنبه 12 اردیبهشت 1392, 15:01 عصر
این پیامو میده:
C:\Windows\system32>curl
'curl' is not recognized as an
operable program or batch file.
متاسفانه ابزار curl بر روی سیستمتون نصب نیست.راه حل اینه که curl رو نصب کنید و یا اینکه با استفاده از کامپوننت WinSock این کار رو انجام بدید.نمونه سورس زیر مثال خوبی از این کار هست :
http://static.daniweb.com/images/attachments/0/GetPage.zip
مهدی اسماعیلی
پنج شنبه 12 اردیبهشت 1392, 19:26 عصر
سلام،
از کامپوننت Microsoft Internet Transfer Control استفاده کنید . . .
تابع مورد استفاده :
Function DoesHTTPFileExist(ByVal URL As String) As Boolean
Dim HTTP As Inet
Dim S As String
Dim Exists As Boolean
Set HTTP = New Inet
With HTTP
.Protocol = icHTTP
.URL = URL
.Execute
Do While .StillExecuting
DoEvents
Loop
S = UCase(.GetHeader())
Exists = (InStr(1, S, "200 OK") > 0)
End With
Set HTTP = Nothing
DoesHTTPFileExist = Exists
End Function
اگر نتونستید باهاش کار کنید ، بگید تا نمونه برنامه بذارم
niksalehi
پنج شنبه 12 اردیبهشت 1392, 19:51 عصر
ممنون، اما موقع اجرا این خط رو ایراد میگیره:
Set HTTP = New Inet
Compile error:
Invalid use of New keyword
مهدی اسماعیلی
پنج شنبه 12 اردیبهشت 1392, 22:54 عصر
از همین Microsoft Internet Transfer Control استفاده کنید . . . MSINET.OCX
و از این کد :
Inet1.RequestTimeout = 20
MyText = Inet1.OpenURL("http://www.site.com/file.txt")
'or:
'MyText = Inet1.OpenURL("http://www.site.com/address")
If InStr(1, MyText, "404 Not Found") Then
MsgBox ("File not found")
Else
MsgBox ("File found")
End If
سورس و ocx را براتون پیوست کردم . . .
موفق باشید .../.
niksalehi
پنج شنبه 12 اردیبهشت 1392, 23:27 عصر
این واسه فایل های .jpg هم کار میده؟ والا واسه من time out میده!
مهدی اسماعیلی
جمعه 13 اردیبهشت 1392, 00:38 صبح
این واسه فایل های .jpg هم کار میده؟ والا واسه من time out میده! برای عکس ، خط دوم کد قبل را به این صورت اصلاح کنید :
MyText = Inet1.OpenURL("http://www.google.com/a.png", icString)
برای time out هم ، خط اول رو حذف کنید
راستی 404 Not Found در خط سوم اسم تایتل سایت هست در مواقعی که فایل پیدا نشده است . . .
توی هر سایتی که استفاده میکنید به این نکته دقت داشته باشید . . . .
در ضمن این تابع OpenURL برای چک کردن موجود بودن عکس خوب نیست !!! طول میکشد
حالا اگه چیز بهتر به ذهنم رسید و یا پیدا کردم بهتون میگم . . . من فکر کردم برای صفحات و فایل های دیگر میخواهید:لبخند:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.