▼
English
Deutsch
Plattdüütsch
Lëtzebuergesch
Nederlands
Dansk
Svenska
Bokmål
Nynorsk
Íslenska
Føroyskt
Español
Català
Galego
Português
Français
Italiano
Latina
Română
Rumantsch
Gaeilge
Suomi
Magyar
Euskara
Esperanto
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
粵語
한국어
Tiếng Việt
Bahasa Indonesia
Bahasa Melayu
हिन्दी
Ελληνικά
Polski
Čeština
Українська
Русский
Türkçe
العربية
עברית
Kiswahili
ʻŌlelo Hawaiʻi
tlhIngan Hol
ทุกอย่างที่ฟอร์มบนเว็บไซต์นี้ทำได้ สำหรับสคริปต์ การตอบกลับทุกครั้งเป็น JSON รวมถึงข้อผิดพลาด คุณจึงไม่ต้องเดาว่าเนื้อหาเป็นผลลัพธ์หรือคำอธิบาย
POST ไปยังเอนด์พอยต์ด้วยพารามิเตอร์ฟอร์มหรือเนื้อหา JSON ทั้งสองแบบเทียบเท่ากัน เลือกแบบที่เครื่องมือของคุณทำได้ง่ายกว่า พารามิเตอร์ action เลือกสิ่งที่จะทำ ใช้ --data-urlencode กับทุกอย่างที่คนพิมพ์ — ข้อความวาง URL คำแปล — เพราะ -d ส่งค่าดิบและจะถูกตัดที่ & ตัวแรก -d ธรรมดาใช้ได้กับค่าคงที่อย่าง action เอง wget ไม่มี --data-urlencode เลย ดังนั้นกับ wget ให้เข้ารหัสแบบเปอร์เซ็นต์ค่าเหล่านั้นเองหรือส่งเนื้อหา JSON ซึ่งไม่ต้องเข้ารหัส
curl -X POST https://0wx.org/api.cgi \
-d action=paste --data-urlencode 'content=hello & world'
curl -X POST https://0wx.org/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.org/api.cgi
ในเนื้อหาฟอร์ม & คั่นพารามิเตอร์ และ curl -d ไม่เข้ารหัสสิ่งที่คุณให้ URL ที่มีสตริงคิวรีจึงถูกตัดที่ & ตัวแรก ส่วนที่เหลือมาถึงเป็นพารามิเตอร์แยก ใช้ --data-urlencode หรือส่ง JSON พารามิเตอร์แปลกปลอมจะถูกปฏิเสธแทนการเพิกเฉย ดังนั้นจะล้มเหลวอย่างชัดเจนแทนที่จะเก็บลิงก์ครึ่งเดียว
# wrong -- the value is cut at the &
curl -X POST https://0wx.org/api.cgi \
-d action=tinyurl -d 'url=https://example.com/?a=1&b=2'
# right
curl -X POST https://0wx.org/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.org/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.org/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.org/api.cgi
ไม่บังคับ หากไม่มีคีย์ คำขอจะเป็นแบบไม่ระบุตัวตนและทำงานเหมือนผู้เยี่ยมชมนิรนามทุกประการ — ผลลัพธ์เป็นสาธารณะอยู่ดี ต่างกันแค่ว่าจะไปอยู่ในรายการไฟล์ของคุณหรือไม่ สร้างคีย์ในหน้าบัญชีแล้วส่งเป็น bearer token การส่งเป็นพารามิเตอร์ apikey ก็ใช้ได้ แต่คีย์ในสตริงคิวรีจะไปปรากฏในบันทึกเซิร์ฟเวอร์และประวัติเบราว์เซอร์
curl -X POST https://0wx.org/api.cgi \
-H 'Authorization: Bearer YOUR_KEY' \
-d action=whoami
wget -qO- --header='Authorization: Bearer YOUR_KEY' \
--post-data 'action=whoami' https://0wx.org/api.cgi
| action | พารามิเตอร์ | คำอธิบาย |
|---|---|---|
whoami | — | ยืนยันว่าคีย์ใช้งานได้และรายงานขีดจำกัดปัจจุบัน ไม่มีค่าใช้จ่าย ควรเรียกก่อน |
ip | — | รายงานที่อยู่ของคุณ PTR ประเทศ จังหวัด และเมืองที่ระบุตำแหน่งได้ พิกัด และ user agent ที่คุณส่ง ไม่ต้องใช้คีย์และตอบเหมือนกันไม่ว่าจะมีคีย์หรือไม่ ตั้งใจให้แคบกว่าหน้าเว็บ: ไม่มี WHOIS ไม่มีโซน DNS และไม่มีการค้นบล็อกลิสต์ การเรียกจึงมีต้นทุนต่อเซิร์ฟเวอร์แค่การอ่านฐานข้อมูลในเครื่อง |
upload | file (ระบุซ้ำได้), resize, lifetime, gallery หรือ g * | อัปโหลดไฟล์หนึ่งไฟล์ขึ้นไป ต้องเป็น multipart/form-data การระบุชื่อแกลเลอรีจะใส่ไฟล์เข้าไปโดยตรงและส่ง id กลับมา |
tinyurl | url, lifetime | ย่อ URL |
hugeurl | url, lifetime | ยืด URL ให้ยาวอย่างไร้สาระโดยตั้งใจ |
paste | content, lifetime | เก็บบล็อกข้อความและส่งลิงก์กลับมา |
translate | content, to, from | แปลข้อความ to และ from เป็นรหัสจากแอ็กชัน langs — โปรดทราบว่ารหัสเหล่านี้ไม่ใช่รหัสประเทศเสมอไป: ภาษาเดนมาร์กคือ da ไม่ใช่ dk from เว้นได้หรือระบุเป็น auto เพื่อให้แบ็กเอนด์ตรวจจับภาษา การระบุจะให้ผลดีกว่ากับข้อความสั้น |
langs | แสดงรายการภาษาที่ translate รับ ใน supported_langs: หนึ่งออบเจ็กต์ต่อภาษา รหัสไปยังชื่อ ตามลำดับที่เว็บไซต์เสนอ ไม่ต้องใช้คีย์ API | |
dyndns | key, 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.org/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.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'
curl -X POST https://0wx.org/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.org/api.cgi
ทุกที่ที่ระบุแกลเลอรี — ใน upload หรือ move — ระบุได้สองวิธีเหมือนกัน: g สำหรับ id ที่มีอยู่ หรือ gallery สำหรับชื่อ ซึ่งจะสร้างใหม่หากยังไม่มี หากส่งทั้งสอง g จะมีผล การตอบกลับจะมี id ของแกลเลอรี โปรดทราบว่าการลบแกลเลอรีจะลบเฉพาะแกลเลอรี ไฟล์จะยังอยู่ในรายการหลัก — ต่างจากฟอร์มบนเว็บที่จะลบไฟล์หลังจากถาม ส่ง withfiles=true เพื่อลบไฟล์ด้วย: สคริปต์ที่จัดระเบียบกลุ่มไม่ควรทำให้ไฟล์ที่อัปโหลดหายโดยไม่ตั้งใจ
curl -X POST https://0wx.org/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
-F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'
curl -X POST https://0wx.org/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.org/api.cgi
การอัปโหลดใช้เนื้อหา JSON ไม่ได้ เพราะไฟล์ต้องส่งเป็น multipart ระบุส่วน file ซ้ำเพื่อส่งหลายไฟล์พร้อมกัน แต่ละไฟล์รายงานแยกกัน: การตอบกลับมีรายการ files ของไฟล์ที่รับ และรายการ rejected ของไฟล์ที่ปฏิเสธ ดังนั้นสำเร็จบางส่วนก็ยังถือว่าสำเร็จ
curl -X POST https://0wx.org/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.org/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.org/i/Ab3xK9pQ",
"file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
{"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
"bytes":204800,"url":"https://0wx.org/i/Zz7yT2mN"}
]}
| error | HTTP | คำอธิบาย |
|---|---|---|
unknown_action | 400 | ไม่มีแอ็กชันนี้ |
bad_json | 400 | เนื้อหาไม่ใช่ JSON ที่ถูกต้อง หรือมีฟิลด์ที่มีโครงสร้างซ้อน |
unexpected_parameter | 400 | มีพารามิเตอร์ที่แอ็กชันนี้ไม่รับส่งมา — มักเป็น & ที่ไม่ได้เข้ารหัสในค่า ข้อความจะระบุชื่อพารามิเตอร์ |
bad_key | 401 | ไม่รู้จักคีย์นี้ คีย์ที่ผิดจะถูกปฏิเสธแทนที่จะถือเป็นนิรนามอย่างเงียบ ๆ |
bad_url | 400 | URL ผิดรูปแบบ หรือใช้สคีมอื่นนอกจาก http(s), ftp หรือ gopher |
bad_lifetime | 400 | อายุการเก็บไม่ใช่ตัวเลขหรือตัวเลขตามด้วย m, h หรือ d |
no_content | 400 | ไม่ได้ส่งอะไรมาให้จัดเก็บ |
url_too_long | 413 | URL ยาวเกินขีดจำกัด |
paste_too_long | 413 | ข้อความใหญ่เกินขีดจำกัดของข้อความวาง ขีดจำกัดวัดเป็นไบต์ UTF-8 ข้อความที่ไม่ใช่อักษรละตินจึงนับได้มากกว่าจำนวนตัวอักษร |
too_many_files | 413 | ไฟล์มากกว่าที่การเรียกครั้งเดียวรับได้ |
no_usable_files | 415 | ไฟล์ทั้งหมดถูกปฏิเสธ ดูสาเหตุในรายการ rejected |
backend_unavailable | 502 | แบ็กเอนด์แปลภาษาไม่ตอบสนอง |
internal | 500 | มีบางอย่างล้มเหลวโดยไม่คาดคิด ได้บันทึกไว้แล้ว |
เรียก whoami เพื่ออ่านค่าปัจจุบันแทนการฮาร์ดโค้ด — ค่าเหล่านี้กำหนดโดยผู้ดูแลเซิร์ฟเวอร์และเปลี่ยนได้ ขนาดเป็นไบต์ UTF-8
0wx.sh ห่อหุ้มทุกอย่างข้างต้น เป็น POSIX shell ล้วนและต้องการแค่ curl และสั้นพอที่จะอ่านก่อนรัน — ซึ่งเป็นสิ่งที่ควรทำกับสคริปต์ที่จะถือคีย์ API ของคุณ ใส่คีย์ใน OWX_KEY แทนการส่ง --key แล้วคีย์จะไม่อยู่ในประวัติเชลล์ของคุณ
wget https://0wx.org/clients/0wx.sh chmod +x 0wx.sh export OWX_KEY=YOUR_KEY ./0wx.sh help ./0wx.sh paste --content 'hello & world'
0wx.py ทำเหมือนไคลเอนต์เชลล์ แต่แยกวิเคราะห์การตอบกลับและพิมพ์ความหมายของฟิลด์แทนการส่ง JSON ดิบให้คุณ — เพิ่ม --json เมื่อต้องการรูปแบบดิบ ใช้ไลบรารีมาตรฐานเท่านั้น: ไม่มี requests ไม่ต้องติดตั้งอะไร หากคุณเขียนไคลเอนต์เอง ฟังก์ชัน send() และ report() คือส่วนที่ควรอ่าน: ทั้งสองแสดงวิธีสร้างคำขอ วิธีดึงข้อความจากคำขอที่ล้มเหลว และสิ่งที่การตอบกลับมี
wget https://0wx.org/clients/0wx.py chmod +x 0wx.py export OWX_KEY=YOUR_KEY ./0wx.py listfiles ./0wx.py listfiles --json | jq '.files[].url'
0wx.pl ทำเหมือน Python และพิมพ์ผลลัพธ์เดียวกัน ใช้เฉพาะโมดูลหลัก — HTTP::Tiny และ JSON::PP มาพร้อม Perl ตั้งแต่ 5.14 จึงไม่ต้องติดตั้งอะไร ควรอ่านคู่กับไคลเอนต์ Python หากคุณเขียนเอง: ทั้งสองภาษาล้มเหลวต่างกันเมื่อคำขอเสีย และทั้งสองสคริปต์บอกว่าที่ไหน
wget https://0wx.org/clients/0wx.pl chmod +x 0wx.pl export OWX_KEY=YOUR_KEY ./0wx.pl listfiles
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.org/clients/0wx.html
0wx-gui.ps1 เป็นชุดแท็บเดียวกับไคลเอนต์เดสก์ท็อป วาดด้วย WinForms — หมายความว่าไม่ต้องติดตั้งอะไรเลย เพราะเป็นส่วนหนึ่งของ Windows อยู่แล้ว ใส่ไว้ในโฟลเดอร์เดียวกับ 0wx.ps1: หน้าต่างยืมการจัดการคำขอจากไฟล์นั้นแทนการมีสำเนาที่สอง จึงต้องมีทั้งสองไฟล์ Windows จะถามก่อนรันสคริปต์ที่ตัวเองไม่ได้เขียน ซึ่งสมเหตุสมผล ทั้งสองไฟล์สั้นพอที่จะอ่านก่อนตอบ
powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
0wx-gtk.pl เป็นหน้าต่าง GTK เล็ก ๆ ที่มีแท็บสำหรับอัปโหลด วาง ย่อ และเรียกดูไฟล์ของคุณ — แบบรายการหรือแบบแกลเลอรีภาพขนาดย่อ กรองตามแกลเลอรี เป็นไคลเอนต์เดียวที่นี่ที่ต้องติดตั้งบางอย่าง — ไบนดิ้ง GTK3 ของ Perl — ซึ่งควรรู้เมื่อเทียบกับหน้าต่าง Windows ด้านบนที่ไม่ต้องติดตั้งอะไรเลย ส่วนอื่นทั้งหมดที่ใช้มาพร้อม Perl คีย์เก็บในหน่วยความจำเท่านั้น: ปิดหน้าต่างก็ลืม และการตั้ง OWX_KEY จะกรอกให้ตอนเริ่ม ไม่ว่าจะแสดงอะไร การตอบกลับดิบของเซิร์ฟเวอร์อยู่ห่างแค่คลิกเดียวใต้ “Server reply”
apt install libgtk3-perl # or: dnf install perl-Gtk3 wget https://0wx.org/clients/0wx-gtk.pl chmod +x 0wx-gtk.pl OWX_KEY=YOUR_KEY ./0wx-gtk.pl
0wx-android.apk ทำสิ่งที่ไคลเอนต์อื่นทำได้จากโทรศัพท์: อัปโหลด วาง ย่อ แปล และเรียกดูไฟล์ของคุณแบบรายการหรือแกลเลอรี การแชร์ไฟล์มาที่แอปนี้จากแอปอื่นจะอัปโหลดไฟล์ และการแชร์ข้อความจะเก็บเป็นข้อความวาง แอปไม่ได้อยู่ในสโตร์ใด อุปกรณ์จึงจะถามให้อนุญาตติดตั้ง — ซึ่งเป็นคำถามที่ควรจริงจังโดยทั่วไป และเป็นเหตุผลที่ซอร์สทั้งหมดอยู่ที่นี่ด้วย: เปิดใน Android Studio แล้วสร้างเองแทนการเชื่อไฟล์ การสร้างต้องใช้ JDK 21; BUILDING.md ข้างในบอกเหตุผล
https://0wx.org/clients/0wx-android.apk # install it https://0wx.org/clients/0wx-android.zip # build it yourself
ตั้งใจไม่มีแอ็กชันดึงจากระยะไกล เพราะจะทำให้เซิร์ฟเวอร์ดึง URL ตามที่ผู้เรียกเลือก ซึ่งเป็นช่องโหว่ request forgery และสคริปต์โจมตีได้หนักกว่าฟอร์มมาก ให้อัปโหลดไฟล์เองแทน