کتابخانه‌ی استاندارد · شبکه

اف‌تی‌پی ftp

کارخواه FTP و FTPS: فهرست پوشه، بارگذاری و دریافت پرونده.

واردسازی اف‌تی‌پی
در این صفحه
  1. گونه‌ها
  2. روال‌ها

با این بسته به سرورهای FTP وصل می‌شوید؛ مثلاً برای بارگذاری سایت روی میزبانی اشتراکی یا گرفتن پرونده‌ها از دستگاه‌های قدیمی. FTP ساده گذرواژه و داده را بی‌رمز می‌فرستد؛ هر جا سرور پشتیبانی می‌کند اتصال امن را به کار ببرید که با AUTH TLS هم فرمان‌ها و هم داده را رمز می‌کند.

انتقال‌ها در حالت غیرفعال (PASV یا EPSV) انجام می‌شوند که از پشت دیوار آتش هم کار می‌کند. روال‌های تجزیه، مثل تحلیل خط فهرست، برای نوشتن ابزارهای خودتان هم در دسترس‌اند.

گونه‌ها

اطلاعات پرونده FileInfo

ساختار اطلاعات پرونده
اطلاعات یک پرونده از فهرست سرور.
نامانگلیسیگونهتوضیح
namenameرشته = ""نام.
sizesizeصحیح۶۴اندازه.
is_diris_dirمنطقی = نادرستپوشه است.
is_linkis_linkمنطقی = نادرستپیوند است.
modemodeرشته = ""مجوزها، مثل rw-r--r--.
raw_dateraw_dateرشته = ""تاریخ همان‌طور که سرور نوشته.
ftp-Parse.salam
واردسازی اف‌تی‌پی

روال ریشه:
    سرچاپ اف‌تی‌پی.کد پاسخ("230 Login successful.")، اف‌تی‌پی.کد پاسخ("خراب")
    سرچاپ اف‌تی‌پی.خط پایانی است("211-Features:")، اف‌تی‌پی.خط پایانی است("211 End")
    سرچاپ اف‌تی‌پی.تحلیل پسیو("227 Entering Passive Mode (192,168,1,10,19,137)")
    سرچاپ اف‌تی‌پی.تحلیل پسیو گسترده("229 Entering Extended Passive Mode (|||50000|)")
    ا := اف‌تی‌پی.تحلیل خط فهرست("-rw-r--r--    1 ftp      ftp          1024 Sep 30 12:00 notes.txt")
    سرچاپ ا.name، ا.size، ا.is_dir، ا.is_link، ا.mode، ا.raw_date
    پ := اف‌تی‌پی.تحلیل خط فهرست("drwxr-xr-x    2 ftp      ftp          4096 Jan 01  2026 backup")
    سرچاپ پ.name، پ.is_dir
    ل := اف‌تی‌پی.تحلیل خط فهرست("lrwxrwxrwx    1 ftp      ftp             7 Mar 03 09:15 current -> backup")
    سرچاپ ل.name، ل.is_link
پایان
خروجی230 0 false true 192.168.1.10:5001 50000 notes.txt 1024 false false rw-r--r-- Sep 30 12:00 backup true current true

کارخواه Client

ساختار کارخواه
یک اتصال FTP.
نامانگلیسیگونهتوضیح
connconntcp.Connاتصال TCP فرمان‌ها.
okokمنطقی = نادرستاتصال سالم است.
hosthostرشته = ""میزبان.
portportصحیح = 21درگاه.
rxbufrxbufرشته = ""داده‌ی خوانده‌شده.
last_replylast_replyرشته = ""آخرین پاسخ سرور.
last_codelast_codeصحیح = 0کد آخرین پاسخ.
securesecureمنطقی = نادرستکانال فرمان رمز شده است.
tls_idxtls_idxصحیح = -1شماره‌ی اتصال TLS.
prot_pprot_pمنطقی = نادرستکانال داده هم رمز می‌شود.
tls_cfgtls_cfgtls.Configپیکربندی TLS.
ftp-Client.salam
واردسازی اف‌تی‌پی
واردسازی تی ال اس

روال ریشه:
    ناپایا ک := اف‌تی‌پی.اتصال امن("ftp.example.com"، ۲۱)
    اگر وارونه اف‌تی‌پی.سالم(ک) یا وارونه اف‌تی‌پی.ورود(ک، "ali"، "s3cret"):
        سرچاپ اف‌تی‌پی.آخرین کد(ک)، اف‌تی‌پی.آخرین پاسخ(ک)
        برگشت
    پایان
    سرچاپ اف‌تی‌پی.امن(ک)، اف‌تی‌پی.داده امن(ک)
    سرچاپ اف‌تی‌پی.سامانه(ک)
    سرچاپ اف‌تی‌پی.قابلیت‌ها(ک)
    _ := اف‌تی‌پی.دودویی(ک)
    سرچاپ اف‌تی‌پی.مسیر جاری(ک)
    _ := اف‌تی‌پی.ساخت مسیر کامل(ک، "/site/assets")
    _ := اف‌تی‌پی.تغییر مسیر(ک، "/site")
    _ := اف‌تی‌پی.نوشتن(ک، "index.html"، "<h1>سلام</h1>")
    _ := اف‌تی‌پی.افزودن(ک، "log.txt"، "یک خط تازه\n")
    سرچاپ اف‌تی‌پی.خواندن(ک، "index.html")
    سرچاپ اف‌تی‌پی.ارسال(ک، "logo.png"، "assets/logo.png")
    سرچاپ اف‌تی‌پی.دریافت(ک، "log.txt"، "log-copy.txt")
    هر ا در اف‌تی‌پی.فهرست(ک، "."):
        سرچاپ ا.name، ا.size، ا.is_dir
    پایان
    هر نام در اف‌تی‌پی.فهرست نام‌ها(ک، "assets"):
        سرچاپ نام
    پایان
    سرچاپ اف‌تی‌پی.فهرست خام(ک، ".").طول() > ۰
    سرچاپ اف‌تی‌پی.اندازه(ک، "index.html")، اف‌تی‌پی.زمان تغییر(ک، "index.html")
    سرچاپ اف‌تی‌پی.پوشه است(ک، "assets")، اف‌تی‌پی.پیوند است(ک، "current")، اف‌تی‌پی.وجود دارد(ک، "old.html")
    _ := اف‌تی‌پی.تغییر نام(ک، "log.txt"، "log-1.txt")
    _ := اف‌تی‌پی.انتقال(ک، "log-1.txt"، "archive/log-1.txt")
    _ := اف‌تی‌پی.حذف(ک، "archive/log-1.txt")
    _ := اف‌تی‌پی.یک سطح بالا(ک)
    _ := اف‌تی‌پی.ساخت پوشه(ک، "tmp")
    _ := اف‌تی‌پی.حذف پوشه(ک، "tmp")
    _ := اف‌تی‌پی.حذف همه(ک، "/site/old")
    _ := اف‌تی‌پی.ارسال پوشه(ک، "public"، "/site")
    _ := اف‌تی‌پی.دریافت پوشه(ک، "/site"، "backup")
    سرچاپ اف‌تی‌پی.فرمان(ک، "SITE CHMOD 644 index.html")
    سرچاپ اف‌تی‌پی.بی‌کار(ک)
    _ := اف‌تی‌پی.متنی(ک)
    اف‌تی‌پی.خروج(ک)
    اف‌تی‌پی.بستن(ک)

    ناپایا س := اف‌تی‌پی.اتصال("ftp.example.com"، ۲۱)
    سرچاپ اف‌تی‌پی.احراز تی‌ال‌اس(س)
    ناپایا پ := تی ال اس.پیکربندی جدید("ftp.example.com")
    پ.ca_file = "company-ca.pem"
    ناپایا ب := اف‌تی‌پی.اتصال امن با تنظیمات("ftp.example.com"، ۲۱، پ)
    ناپایا د := اف‌تی‌پی.اتصال("ftp.example.com"، ۲۱)
    سرچاپ اف‌تی‌پی.ارتقا به تی‌ال‌اس(د، پ)
    اف‌تی‌پی.بستن(س)
    اف‌تی‌پی.بستن(ب)
    اف‌تی‌پی.بستن(د)
پایان

روال‌ها

اتصال Dial

روال اتصال(host: رشته، port: صحیح): کارخواه
به سرور FTP وصل می‌شود؛ هنوز وارد نشده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

ارتقا به تی‌ال‌اس AuthTLSWith

روال ارتقا به تی‌ال‌اس(c &: کارخواه، cfg: tls.Config): منطقی
اتصال را با AUTH TLS و پیکربندی داده‌شده امن می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

احراز تی‌ال‌اس AuthTLS

روال احراز تی‌ال‌اس(c &: کارخواه): منطقی
اتصال را با AUTH TLS امن می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

اتصال امن DialTLS

روال اتصال امن(host: رشته، port: صحیح): کارخواه
وصل می‌شود و بی‌درنگ با AUTH TLS امن می‌کند؛ FTPS صریح.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

اتصال امن با تنظیمات DialTLSWith

روال اتصال امن با تنظیمات(host: رشته، port: صحیح، cfg: tls.Config): کارخواه
مثل روال بالا، با پیکربندی TLS.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

امن Secure

روال امن(c: کارخواه): منطقی
کانال فرمان رمز شده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

داده امن SecureData

روال داده امن(c: کارخواه): منطقی
کانال داده هم رمز می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

ورود Login

روال ورود(c &: کارخواه، user: رشته، password: رشته): منطقی
وارد می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

خروج Quit

روال خروج(c &: کارخواه)
با QUIT خارج می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

بستن Close

روال بستن(c &: کارخواه)
اتصال را می‌بندد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

سالم Ok

روال سالم(c: کارخواه): منطقی
اتصال سالم است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

آخرین پاسخ LastReply

روال آخرین پاسخ(c: کارخواه): رشته
متن آخرین پاسخ.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

آخرین کد LastCode

روال آخرین کد(c: کارخواه): صحیح
کد آخرین پاسخ، مثل ۲۳۰.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

فرمان Command

روال فرمان(c &: کارخواه، line: رشته): صحیح
یک فرمان خام می‌فرستد و کد پاسخ را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

بی‌کار Noop

روال بی‌کار(c &: کارخواه): منطقی
فرمان NOOP برای زنده نگه داشتن اتصال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

سامانه System

روال سامانه(c &: کارخواه): رشته
نوع سامانه‌ی سرور.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

قابلیت‌ها Features

روال قابلیت‌ها(c &: کارخواه): رشته
قابلیت‌هایی که سرور با FEAT اعلام می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

دودویی Binary

روال دودویی(c &: کارخواه): منطقی
حالت انتقال دودویی؛ برای همه‌چیز جز متن ساده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

متنی Ascii

روال متنی(c &: کارخواه): منطقی
حالت انتقال متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

مسیر جاری Pwd

روال مسیر جاری(c &: کارخواه): رشته
پوشه‌ی جاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

تغییر مسیر Cwd

روال تغییر مسیر(c &: کارخواه، path: رشته): منطقی
پوشه را عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

یک سطح بالا CdUp

روال یک سطح بالا(c &: کارخواه): منطقی
به پوشه‌ی بالاتر می‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

ساخت پوشه Mkdir

روال ساخت پوشه(c &: کارخواه، path: رشته): منطقی
پوشه می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

حذف پوشه Rmdir

روال حذف پوشه(c &: کارخواه، path: رشته): منطقی
پوشه‌ی خالی را حذف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

ساخت مسیر کامل MkdirAll

روال ساخت مسیر کامل(c &: کارخواه، path: رشته): منطقی
پوشه و پوشه‌های بالاترش را می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

فهرست خام ListRaw

روال فهرست خام(c &: کارخواه، path: رشته): رشته
فهرست پوشه همان‌طور که سرور می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

فهرست List

روال فهرست(c &: کارخواه، path: رشته): وکتور<اطلاعات پرونده>
فهرست پوشه، تجزیه‌شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Parse.salam

فهرست نام‌ها NameList

روال فهرست نام‌ها(c &: کارخواه، path: رشته): وکتور<رشته>
فقط نام‌های پوشه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

اندازه Size

روال اندازه(c &: کارخواه، path: رشته): صحیح۶۴
اندازه‌ی پرونده؛ اگر نشد، ۱-.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

زمان تغییر ModTime

روال زمان تغییر(c &: کارخواه، path: رشته): رشته
زمان تغییر به قالب YYYYMMDDHHMMSS.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

پوشه است IsDir

روال پوشه است(c &: کارخواه، path: رشته): منطقی
پوشه است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

روال پیوند است(c &: کارخواه، path: رشته): منطقی
پیوند است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

وجود دارد Exists

روال وجود دارد(c &: کارخواه، path: رشته): منطقی
پرونده یا پوشه هست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

خواندن Read

روال خواندن(c &: کارخواه، remote: رشته): رشته
پرونده را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

نوشتن Write

روال نوشتن(c &: کارخواه، remote: رشته، data: رشته): منطقی
متن را در پرونده‌ی سرور می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

افزودن Append

روال افزودن(c &: کارخواه، remote: رشته، data: رشته): منطقی
متن را به انتهای پرونده می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

دریافت Download

روال دریافت(c &: کارخواه، remote: رشته، local: رشته): منطقی
پرونده را در پرونده‌ی محلی دریافت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

ارسال Upload

روال ارسال(c &: کارخواه، local: رشته، remote: رشته): منطقی
پرونده‌ی محلی را می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

حذف Delete

روال حذف(c &: کارخواه، path: رشته): منطقی
پرونده را حذف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

تغییر نام Rename

روال تغییر نام(c &: کارخواه، from_path: رشته، to_path: رشته): منطقی
نام را عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

انتقال Move

روال انتقال(c &: کارخواه، from_path: رشته، to_path: رشته): منطقی
جابه‌جا می‌کند؛ پوشه‌ی مقصد اگر نباشد ساخته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

حذف همه RemoveAll

روال حذف همه(c &: کارخواه، path: رشته): منطقی
پوشه و همه‌ی محتوایش را حذف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

دریافت پوشه DownloadDir

روال دریافت پوشه(c &: کارخواه، remote: رشته، local: رشته): منطقی
پوشه را با همه‌ی محتوا دریافت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

ارسال پوشه UploadDir

روال ارسال پوشه(c &: کارخواه، local: رشته، remote: رشته): منطقی
پوشه‌ی محلی را با همه‌ی محتوا می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Client.salam

کد پاسخ ReplyCode

روال کد پاسخ(line: رشته): صحیح
کد سه‌رقمی یک خط پاسخ؛ اگر نباشد، صفر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Parse.salam

خط پایانی است IsFinalLine

روال خط پایانی است(line: رشته): منطقی
خط پایانی پاسخ چندخطی است؛ خط پایانی بعد از کد فاصله دارد، نه خط تیره.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Parse.salam

تحلیل پسیو ParsePasv

روال تحلیل پسیو(reply: رشته): رشته
نشانی و درگاه داده را از پاسخ PASV درمی‌آورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Parse.salam

تحلیل پسیو گسترده ParseEpsv

روال تحلیل پسیو گسترده(reply: رشته): صحیح
درگاه داده را از پاسخ EPSV درمی‌آورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Parse.salam

تحلیل خط فهرست ParseListLine

روال تحلیل خط فهرست(line: رشته): اطلاعات پرونده
یک خط فهرست به سبک یونیکس را تجزیه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ftp-Parse.salam