~0wx.es~ :: ฝากไฟล์และเครื่องมือที่มีประโยชน์อื่น ๆ


อัปโหลด TinyURL HugeURL Pastebin เกี่ยวกับ รายงาน เข้าสู่ระบบ
ไทย
English English Deutsch Deutsch Plattdüütsch Plattdüütsch Lëtzebuergesch Lëtzebuergesch Nederlands Nederlands Dansk Dansk Svenska Svenska Bokmål Bokmål Nynorsk Nynorsk Íslenska Íslenska Føroyskt Føroyskt Español Español Català Català Galego Galego Português Português Français Français Italiano Italiano Latina Latina Română Română Rumantsch Rumantsch Gaeilge Gaeilge Suomi Suomi Magyar Magyar Euskara Euskara Esperanto Esperanto 日本語 日本語 简体中文 简体中文 繁體中文(台灣) 繁體中文(台灣) 繁體中文(香港) 繁體中文(香港) 粵語 粵語 한국어 한국어 Tiếng Việt Tiếng Việt Bahasa Indonesia Bahasa Indonesia Bahasa Melayu Bahasa Melayu हिन्दी हिन्दी Ελληνικά Ελληνικά Polski Polski Čeština Čeština Українська Українська Русский Русский Türkçe Türkçe العربية العربية עברית עברית Kiswahili Kiswahili ʻŌlelo Hawaiʻi ʻŌlelo Hawaiʻi tlhIngan Hol tlhIngan Hol

มี API สำหรับทุกฟังก์ชันบน 0wx.es คุณใช้มันสำหรับสคริปต์หรือคำสั่งบนคอนโซลได้

ทุกอย่างที่ฟอร์มบนเว็บไซต์นี้ทำได้ สำหรับสคริปต์ การตอบกลับทุกครั้งเป็น JSON รวมถึงข้อผิดพลาด คุณจึงไม่ต้องเดาว่าเนื้อหาเป็นผลลัพธ์หรือคำอธิบาย

การส่งคำขอ

POST ไปยังเอนด์พอยต์ด้วยพารามิเตอร์ฟอร์มหรือเนื้อหา JSON ทั้งสองแบบเทียบเท่ากัน เลือกแบบที่เครื่องมือของคุณทำได้ง่ายกว่า พารามิเตอร์ action เลือกสิ่งที่จะทำ ใช้ --data-urlencode กับทุกอย่างที่คนพิมพ์ — ข้อความวาง URL คำแปล — เพราะ -d ส่งค่าดิบและจะถูกตัดที่ & ตัวแรก -d ธรรมดาใช้ได้กับค่าคงที่อย่าง action เอง wget ไม่มี --data-urlencode เลย ดังนั้นกับ wget ให้เข้ารหัสแบบเปอร์เซ็นต์ค่าเหล่านั้นเองหรือส่งเนื้อหา JSON ซึ่งไม่ต้องเข้ารหัส

curl -X POST https://0wx.es/api.cgi \
     -d action=paste --data-urlencode 'content=hello & world'

curl -X POST https://0wx.es/api.cgi \
     -H 'Content-Type: application/json' \
     -d '{"action":"paste","content":"hello & world"}'

wget -qO- --header='Content-Type: application/json' \
     --post-data '{"action":"paste","content":"hello & world"}' https://0wx.es/api.cgi
ค่าที่มี &

ในเนื้อหาฟอร์ม & คั่นพารามิเตอร์ และ curl -d ไม่เข้ารหัสสิ่งที่คุณให้ URL ที่มีสตริงคิวรีจึงถูกตัดที่ & ตัวแรก ส่วนที่เหลือมาถึงเป็นพารามิเตอร์แยก ใช้ --data-urlencode หรือส่ง JSON พารามิเตอร์แปลกปลอมจะถูกปฏิเสธแทนการเพิกเฉย ดังนั้นจะล้มเหลวอย่างชัดเจนแทนที่จะเก็บลิงก์ครึ่งเดียว

# wrong -- the value is cut at the &
curl -X POST https://0wx.es/api.cgi \
     -d action=tinyurl -d 'url=https://example.com/?a=1&b=2'

# right
curl -X POST https://0wx.es/api.cgi \
     -d action=tinyurl --data-urlencode 'url=https://example.com/?a=1&b=2'

# also right -- JSON needs no escaping
curl -X POST https://0wx.es/api.cgi -H 'Content-Type: application/json' \
     -d '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}'

# wget has no --data-urlencode, so percent-encode it yourself...
wget -qO- --post-data 'action=tinyurl&url=https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2' https://0wx.es/api.cgi

# ...or send JSON, which needs no encoding at all
wget -qO- --header='Content-Type: application/json' \
     --post-data '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}' https://0wx.es/api.cgi
การยืนยันตัวตน

ไม่บังคับ หากไม่มีคีย์ คำขอจะเป็นแบบไม่ระบุตัวตนและทำงานเหมือนผู้เยี่ยมชมนิรนามทุกประการ — ผลลัพธ์เป็นสาธารณะอยู่ดี ต่างกันแค่ว่าจะไปอยู่ในรายการไฟล์ของคุณหรือไม่ สร้างคีย์ในหน้าบัญชีแล้วส่งเป็น bearer token การส่งเป็นพารามิเตอร์ apikey ก็ใช้ได้ แต่คีย์ในสตริงคิวรีจะไปปรากฏในบันทึกเซิร์ฟเวอร์และประวัติเบราว์เซอร์

curl -X POST https://0wx.es/api.cgi \
     -H 'Authorization: Bearer YOUR_KEY' \
     -d action=whoami

wget -qO- --header='Authorization: Bearer YOUR_KEY' \
     --post-data 'action=whoami' https://0wx.es/api.cgi
แอ็กชัน
actionพารามิเตอร์คำอธิบาย
whoamiยืนยันว่าคีย์ใช้งานได้และรายงานขีดจำกัดปัจจุบัน ไม่มีค่าใช้จ่าย ควรเรียกก่อน
ipรายงานที่อยู่ของคุณ PTR ประเทศ จังหวัด และเมืองที่ระบุตำแหน่งได้ พิกัด และ user agent ที่คุณส่ง ไม่ต้องใช้คีย์และตอบเหมือนกันไม่ว่าจะมีคีย์หรือไม่ ตั้งใจให้แคบกว่าหน้าเว็บ: ไม่มี WHOIS ไม่มีโซน DNS และไม่มีการค้นบล็อกลิสต์ การเรียกจึงมีต้นทุนต่อเซิร์ฟเวอร์แค่การอ่านฐานข้อมูลในเครื่อง
uploadfile (ระบุซ้ำได้), resize, lifetime, gallery หรือ g *อัปโหลดไฟล์หนึ่งไฟล์ขึ้นไป ต้องเป็น multipart/form-data การระบุชื่อแกลเลอรีจะใส่ไฟล์เข้าไปโดยตรงและส่ง id กลับมา
tinyurlurl, lifetimeย่อ URL
hugeurlurl, lifetimeยืด URL ให้ยาวอย่างไร้สาระโดยตั้งใจ
pastecontent, lifetimeเก็บบล็อกข้อความและส่งลิงก์กลับมา
translatecontent, to, fromแปลข้อความ to และ from เป็นรหัสจากแอ็กชัน langs — โปรดทราบว่ารหัสเหล่านี้ไม่ใช่รหัสประเทศเสมอไป: ภาษาเดนมาร์กคือ da ไม่ใช่ dk from เว้นได้หรือระบุเป็น auto เพื่อให้แบ็กเอนด์ตรวจจับภาษา การระบุจะให้ผลดีกว่ากับข้อความสั้น
langsแสดงรายการภาษาที่ translate รับ ใน supported_langs: หนึ่งออบเจ็กต์ต่อภาษา รหัสไปยังชื่อ ตามลำดับที่เว็บไซต์เสนอ ไม่ต้องใช้คีย์ API
dyndnskey, ip, formatอัปเดตชื่อ DNS ไดนามิก เป็นแอ็กชันเดียวที่ไม่ต้องใช้คีย์ API: เรียกโดยเราเตอร์ซึ่งมีช่องเดียวสำหรับ URL และส่งเฮดเดอร์ไม่ได้ key คือคีย์อัปเดตของแต่ละชื่อที่แสดงในบัญชีของคุณ ไม่ใช่คีย์ API เว้น ip แล้วจะใช้ที่อยู่ที่คุณเรียกมา การตอบกลับเป็นคำมาตรฐาน dyndns2 — good, nochg, badauth, abuse หรือ dnserr — เป็นข้อความธรรมดา เพราะเราเตอร์แยกวิเคราะห์แบบนั้น เพิ่ม format=json เพื่อรับ JSON ตามปกติ
listfiles *page, gแสดงรายการไฟล์ของคุณพร้อมทุกอย่างที่แผงข้อมูลแสดง รวมถึงภาพขนาดย่อและลิงก์โดยตรง g จำกัดเฉพาะแกลเลอรีเดียว หรือ none สำหรับไฟล์ที่ไม่อยู่ในแกลเลอรีใด
listpastes *pageแสดงรายการข้อความวางของคุณ พร้อมตัวอย่าง 200 ตัวอักษรของแต่ละรายการแทนเนื้อหาทั้งหมด
listurls *pageแสดงรายการ URL สั้นและยาวมหึมาของคุณ พร้อมที่อยู่ที่แต่ละรายการชี้ไป
otl *shareสร้างลิงก์ใช้ครั้งเดียวไปยังไฟล์ของคุณ การเรียกแต่ละครั้งสร้างลิงก์ใหม่ ดังนั้นการให้ไฟล์เดียวกันแก่สองคนจะได้สองลิงก์
listotl *pageแสดงรายการลิงก์ใช้ครั้งเดียวที่ใช้งานอยู่ ไฟล์ที่แต่ละลิงก์ชี้ไป และว่าไฟล์นั้นหมดอายุแล้วหรือยัง
listgalleries *แสดงรายการแกลเลอรีของคุณพร้อม id ชื่อ จำนวนไฟล์ และสถานะการเผยแพร่
gallery *g, publishรายงานสถานะการเผยแพร่ของแกลเลอรี และเปลี่ยนสถานะเมื่อระบุ publish
move *share (ระบุซ้ำได้), gallery หรือ gย้ายไฟล์เข้าแกลเลอรี โดยระบุชื่อ (สร้างใหม่หากยังไม่มี) หรือ id หากเว้นทั้งสองจะย้ายกลับไปรายการหลัก
delete *share (ระบุซ้ำได้), g, otl, withfilesลบไฟล์ ข้อความวาง URL สั้น แกลเลอรี ลิงก์ใช้ครั้งเดียว หรือผสมกัน share จะถูกจับคู่กับไฟล์ของคุณก่อน แล้วจึงกับข้อความวางและลิงก์ ผู้เรียกจึงไม่ต้องแยกประเภท ลิงก์ใช้ครั้งเดียวใส่ใน otl แยกต่างหาก: การลบลิงก์ต้องไม่สับสนกับการลบไฟล์ที่ลิงก์ชี้ไป

* แอ็กชันเหล่านี้ต้องใช้คีย์ API เพราะอ่านหรือเปลี่ยนข้อมูลของบัญชีหนึ่ง จึงไม่มีรูปแบบนิรนาม

หลายรายการพร้อมกัน

share และ g รับฟิลด์ที่ระบุซ้ำ อาร์เรย์ JSON หรือรายการคั่นด้วยจุลภาค — แล้วแต่เครื่องมือของคุณทำได้ง่ายที่สุด รายการซ้ำจะถูกเพิกเฉย

curl -X POST https://0wx.es/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -d action=move -d share=Ab3xK9pQ -d share=Zz7yT2mN --data-urlencode 'gallery=Holiday 2026'

curl -X POST https://0wx.es/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'

curl -X POST https://0wx.es/api.cgi -H 'Content-Type: application/json' \
     -H 'Authorization: Bearer YOUR_KEY' \
     -d '{"action":"move","share":["Ab3xK9pQ","Zz7yT2mN"],"g":7}'

wget -qO- --header='Authorization: Bearer YOUR_KEY' \
     --post-data 'action=delete&share=Ab3xK9pQ,Zz7yT2mN' https://0wx.es/api.cgi
แกลเลอรี

ทุกที่ที่ระบุแกลเลอรี — ใน upload หรือ move — ระบุได้สองวิธีเหมือนกัน: g สำหรับ id ที่มีอยู่ หรือ gallery สำหรับชื่อ ซึ่งจะสร้างใหม่หากยังไม่มี หากส่งทั้งสอง g จะมีผล การตอบกลับจะมี id ของแกลเลอรี โปรดทราบว่าการลบแกลเลอรีจะลบเฉพาะแกลเลอรี ไฟล์จะยังอยู่ในรายการหลัก — ต่างจากฟอร์มบนเว็บที่จะลบไฟล์หลังจากถาม ส่ง withfiles=true เพื่อลบไฟล์ด้วย: สคริปต์ที่จัดระเบียบกลุ่มไม่ควรทำให้ไฟล์ที่อัปโหลดหายโดยไม่ตั้งใจ

curl -X POST https://0wx.es/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'

curl -X POST https://0wx.es/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -d action=gallery -d g=7 -d publish=true

wget -qO- --header='Authorization: Bearer YOUR_KEY' \
     --post-data 'action=gallery&g=7&publish=true' https://0wx.es/api.cgi
การอัปโหลดไฟล์

การอัปโหลดใช้เนื้อหา JSON ไม่ได้ เพราะไฟล์ต้องส่งเป็น multipart ระบุส่วน file ซ้ำเพื่อส่งหลายไฟล์พร้อมกัน แต่ละไฟล์รายงานแยกกัน: การตอบกลับมีรายการ files ของไฟล์ที่รับ และรายการ rejected ของไฟล์ที่ปฏิเสธ ดังนั้นสำเร็จบางส่วนก็ยังถือว่าสำเร็จ

curl -X POST https://0wx.es/api.cgi \
     -H 'Authorization: Bearer YOUR_KEY' \
     -F action=upload \
     -F file=@photo.jpg \
     -F file=@notes.txt \
     -F lifetime=7d

ไม่มีรูปแบบ wget สำหรับรายการนี้ wget สร้างเนื้อหา multipart/form-data ไม่ได้ — ไม่มีสิ่งเทียบเท่า -F ของ curl — และการอัปโหลดต้องเป็น multipart ใช้ curl หรือประกอบเนื้อหาและ boundary เองแล้วส่งด้วย --post-file

อายุการเก็บ

ไม่บังคับสำหรับทุกแอ็กชันที่จัดเก็บบางอย่าง รับค่าเป็นวินาทีล้วน หรือตัวเลขตามด้วย m, h หรือ d — รูปแบบเดียวกับที่ฟอร์มบนเว็บรับ เว้นไว้หรือส่ง 0 เพื่อเก็บรายการไว้ไม่จำกัดเวลา

การตอบกลับ

การตอบกลับทุกครั้งเป็นออบเจ็กต์ JSON ที่มีฟิลด์ ok เมื่อสำเร็จจะมีผลลัพธ์ เมื่อล้มเหลวจะมีรหัส error ที่คงที่และ message ที่มนุษย์อ่านได้ ให้แยกกรณีตามรหัสและบันทึกข้อความ

{"ok":true,"type":"paste","share":"Ab3xK9pQ",
 "url":"https://0wx.es/p/Ab3xK9pQ","bytes":11}

{"ok":false,"error":"url_too_long",
 "message":"URL exceeds the maximum length."}
แท็กเสียง

เมื่อไฟล์มีแท็ก listfiles จะเพิ่ม file_tags ในรายการ: ศิลปิน ชื่อเพลง และอัลบั้ม อ่านจาก ID3 คอมเมนต์ Vorbis หรือ MP4 atom ตอนอัปโหลดไฟล์ คีย์จะไม่มีแทนที่จะเป็น null เมื่อไม่มีอะไรรายงาน ซึ่งเป็นกรณีของไฟล์ส่วนใหญ่ จึงควรทดสอบก่อนอ่าน ฟิลด์แต่ละฟิลด์อาจหายไปด้วย — ไฟล์อาจมีชื่อเพลงแต่ไม่มีอัลบั้ม ไม่มีสิ่งอื่นใดจากเมตาดาต้าของไฟล์ที่เปิดเผย: ไฟล์ที่ซื้อจาก iTunes บันทึกชื่อผู้ซื้อและ Apple ID และสิ่งเหล่านั้นตั้งใจไม่อ่านเด็ดขาด

{"ok":true,"type":"files","total":2,"page":1,"pages":1,"files":[
  {"share":"Ab3xK9pQ","name":"autobahn.mp3","mime":"audio/mpeg",
   "bytes":8123456,"url":"https://0wx.es/i/Ab3xK9pQ",
   "file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
  {"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
   "bytes":204800,"url":"https://0wx.es/i/Zz7yT2mN"}
]}
รหัสข้อผิดพลาด
errorHTTPคำอธิบาย
unknown_action400ไม่มีแอ็กชันนี้
bad_json400เนื้อหาไม่ใช่ JSON ที่ถูกต้อง หรือมีฟิลด์ที่มีโครงสร้างซ้อน
unexpected_parameter400มีพารามิเตอร์ที่แอ็กชันนี้ไม่รับส่งมา — มักเป็น & ที่ไม่ได้เข้ารหัสในค่า ข้อความจะระบุชื่อพารามิเตอร์
bad_key401ไม่รู้จักคีย์นี้ คีย์ที่ผิดจะถูกปฏิเสธแทนที่จะถือเป็นนิรนามอย่างเงียบ ๆ
bad_url400URL ผิดรูปแบบ หรือใช้สคีมอื่นนอกจาก http(s), ftp หรือ gopher
bad_lifetime400อายุการเก็บไม่ใช่ตัวเลขหรือตัวเลขตามด้วย m, h หรือ d
no_content400ไม่ได้ส่งอะไรมาให้จัดเก็บ
url_too_long413URL ยาวเกินขีดจำกัด
paste_too_long413ข้อความใหญ่เกินขีดจำกัดของข้อความวาง ขีดจำกัดวัดเป็นไบต์ UTF-8 ข้อความที่ไม่ใช่อักษรละตินจึงนับได้มากกว่าจำนวนตัวอักษร
too_many_files413ไฟล์มากกว่าที่การเรียกครั้งเดียวรับได้
no_usable_files415ไฟล์ทั้งหมดถูกปฏิเสธ ดูสาเหตุในรายการ rejected
backend_unavailable502แบ็กเอนด์แปลภาษาไม่ตอบสนอง
internal500มีบางอย่างล้มเหลวโดยไม่คาดคิด ได้บันทึกไว้แล้ว
ขีดจำกัด

เรียก whoami เพื่ออ่านค่าปัจจุบันแทนการฮาร์ดโค้ด — ค่าเหล่านี้กำหนดโดยผู้ดูแลเซิร์ฟเวอร์และเปลี่ยนได้ ขนาดเป็นไบต์ UTF-8

ไคลเอนต์เชลล์

0wx.sh ห่อหุ้มทุกอย่างข้างต้น เป็น POSIX shell ล้วนและต้องการแค่ curl และสั้นพอที่จะอ่านก่อนรัน — ซึ่งเป็นสิ่งที่ควรทำกับสคริปต์ที่จะถือคีย์ API ของคุณ ใส่คีย์ใน OWX_KEY แทนการส่ง --key แล้วคีย์จะไม่อยู่ในประวัติเชลล์ของคุณ

wget https://0wx.es/clients/0wx.sh
chmod +x 0wx.sh
export OWX_KEY=YOUR_KEY
./0wx.sh help
./0wx.sh paste --content 'hello & world'
ไคลเอนต์ Python

0wx.py ทำเหมือนไคลเอนต์เชลล์ แต่แยกวิเคราะห์การตอบกลับและพิมพ์ความหมายของฟิลด์แทนการส่ง JSON ดิบให้คุณ — เพิ่ม --json เมื่อต้องการรูปแบบดิบ ใช้ไลบรารีมาตรฐานเท่านั้น: ไม่มี requests ไม่ต้องติดตั้งอะไร หากคุณเขียนไคลเอนต์เอง ฟังก์ชัน send() และ report() คือส่วนที่ควรอ่าน: ทั้งสองแสดงวิธีสร้างคำขอ วิธีดึงข้อความจากคำขอที่ล้มเหลว และสิ่งที่การตอบกลับมี

wget https://0wx.es/clients/0wx.py
chmod +x 0wx.py
export OWX_KEY=YOUR_KEY
./0wx.py listfiles
./0wx.py listfiles --json | jq '.files[].url'
ไคลเอนต์ Perl

0wx.pl ทำเหมือน Python และพิมพ์ผลลัพธ์เดียวกัน ใช้เฉพาะโมดูลหลัก — HTTP::Tiny และ JSON::PP มาพร้อม Perl ตั้งแต่ 5.14 จึงไม่ต้องติดตั้งอะไร ควรอ่านคู่กับไคลเอนต์ Python หากคุณเขียนเอง: ทั้งสองภาษาล้มเหลวต่างกันเมื่อคำขอเสีย และทั้งสองสคริปต์บอกว่าที่ไหน

wget https://0wx.es/clients/0wx.pl
chmod +x 0wx.pl
export OWX_KEY=YOUR_KEY
./0wx.pl listfiles
ไคลเอนต์ PowerShell

0wx.ps1 เป็นคู่ของไคลเอนต์ Python สำหรับ Windows: คำสั่งเดียวกัน ผลลัพธ์เดียวกัน และแยกวิเคราะห์การตอบกลับแทนการส่ง JSON ดิบ — เพิ่ม --json หากต้องการ เขียนสำหรับ Windows PowerShell ที่มีอยู่ในเครื่องแล้ว จึงไม่ต้องติดตั้งอะไร และรันบน PowerShell 7 ได้โดยไม่ต้องแก้ คุณอาจต้องใช้ Set-ExecutionPolicy -Scope Process Bypass ในหน้าต่างที่รัน ซึ่งคือ Windows ถามว่าคุณตั้งใจรันสคริปต์ที่ดาวน์โหลดมาจริงหรือไม่ — เป็นคำถามที่สมเหตุสมผล และไฟล์สั้นพอที่จะอ่านก่อน

$env:OWX_KEY = 'YOUR_KEY'
.\0wx.ps1 listfiles
.\0wx.ps1 paste --content 'hello & world'
.\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
หน้าต่างในเบราว์เซอร์ของคุณ

0wx.html เป็นชุดแท็บเดียวกับไคลเอนต์เดสก์ท็อป ในรูปสามไฟล์ — หน้าเว็บ สไตล์ชีต และสคริปต์ — ไม่ต้องติดตั้ง ไม่มีเฟรมเวิร์ก และไม่โหลดอะไรจากที่อื่นนอกจากเว็บไซต์นี้ เป็นสามไฟล์แทนที่จะเป็นไฟล์เดียวเพราะ Content-Security-Policy ของเว็บไซต์ห้ามสคริปต์และสไตล์แบบอินไลน์ ซึ่งควรรักษาไว้ ลากไฟล์มาวางได้ ต้องเปิดจากที่นี่แทนการบันทึกแล้วเปิดจากดิสก์ของคุณ: API ไม่ส่งเฮดเดอร์ cross-origin สำเนาในเครื่องจึงถูกเบราว์เซอร์ปฏิเสธทุกคำขอก่อนจะส่งออก คีย์เก็บในหน่วยความจำ เว้นแต่คุณติ๊กช่องให้จำไว้

https://0wx.es/clients/0wx.html
หน้าต่างบน Windows

0wx-gui.ps1 เป็นชุดแท็บเดียวกับไคลเอนต์เดสก์ท็อป วาดด้วย WinForms — หมายความว่าไม่ต้องติดตั้งอะไรเลย เพราะเป็นส่วนหนึ่งของ Windows อยู่แล้ว ใส่ไว้ในโฟลเดอร์เดียวกับ 0wx.ps1: หน้าต่างยืมการจัดการคำขอจากไฟล์นั้นแทนการมีสำเนาที่สอง จึงต้องมีทั้งสองไฟล์ Windows จะถามก่อนรันสคริปต์ที่ตัวเองไม่ได้เขียน ซึ่งสมเหตุสมผล ทั้งสองไฟล์สั้นพอที่จะอ่านก่อนตอบ

powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
หน้าต่างบน Linux ด้วย GTK

0wx-gtk.pl เป็นหน้าต่าง GTK เล็ก ๆ ที่มีแท็บสำหรับอัปโหลด วาง ย่อ และเรียกดูไฟล์ของคุณ — แบบรายการหรือแบบแกลเลอรีภาพขนาดย่อ กรองตามแกลเลอรี เป็นไคลเอนต์เดียวที่นี่ที่ต้องติดตั้งบางอย่าง — ไบนดิ้ง GTK3 ของ Perl — ซึ่งควรรู้เมื่อเทียบกับหน้าต่าง Windows ด้านบนที่ไม่ต้องติดตั้งอะไรเลย ส่วนอื่นทั้งหมดที่ใช้มาพร้อม Perl คีย์เก็บในหน่วยความจำเท่านั้น: ปิดหน้าต่างก็ลืม และการตั้ง OWX_KEY จะกรอกให้ตอนเริ่ม ไม่ว่าจะแสดงอะไร การตอบกลับดิบของเซิร์ฟเวอร์อยู่ห่างแค่คลิกเดียวใต้ “Server reply”

apt install libgtk3-perl        # or: dnf install perl-Gtk3
wget https://0wx.es/clients/0wx-gtk.pl
chmod +x 0wx-gtk.pl
OWX_KEY=YOUR_KEY ./0wx-gtk.pl
แอป Android

0wx-android.apk ทำสิ่งที่ไคลเอนต์อื่นทำได้จากโทรศัพท์: อัปโหลด วาง ย่อ แปล และเรียกดูไฟล์ของคุณแบบรายการหรือแกลเลอรี การแชร์ไฟล์มาที่แอปนี้จากแอปอื่นจะอัปโหลดไฟล์ และการแชร์ข้อความจะเก็บเป็นข้อความวาง แอปไม่ได้อยู่ในสโตร์ใด อุปกรณ์จึงจะถามให้อนุญาตติดตั้ง — ซึ่งเป็นคำถามที่ควรจริงจังโดยทั่วไป และเป็นเหตุผลที่ซอร์สทั้งหมดอยู่ที่นี่ด้วย: เปิดใน Android Studio แล้วสร้างเองแทนการเชื่อไฟล์ การสร้างต้องใช้ JDK 21; BUILDING.md ข้างในบอกเหตุผล

https://0wx.es/clients/0wx-android.apk        # install it
https://0wx.es/clients/0wx-android.zip        # build it yourself
หมายเหตุ

ตั้งใจไม่มีแอ็กชันดึงจากระยะไกล เพราะจะทำให้เซิร์ฟเวอร์ดึง URL ตามที่ผู้เรียกเลือก ซึ่งเป็นช่องโหว่ request forgery และสคริปต์โจมตีได้หนักกว่าฟอร์มมาก ให้อัปโหลดไฟล์เองแทน


(p) 2018 0wx.es -/- ขับเคลื่อนด้วย Linux และ GNU. Live free or die! (root@0wx.es)