Tải ảnh từ server về client


Em đang làm đồ án về socket này, cho em hỏi làm sao để tải ảnh từ server về được vậy em, em hơi hoang mang chỗ này.
Mong mọi người chỉ giáo ạ.

về đâu?
theo như ngữ cảnh, bạn đang cần truyền file từ client và server

trước khi làm tới phần này, thì bạn đã làm được gì liên quan đến giao tiếp mạng (chắc là dùng tcp) mô hình client-server chưa? ví dụ client gửi đoạn text (bytes), server nhận, chỉ cần là console cũng được

6 Likes

em làm rồi ạ, tới phần này hơi khó hiểu nên mới hỏi sao để tải ảnh về được ạ

nếu bạn đã làm được cái mà mình nói, thì coi như bạn đã xong được 70% rồi

khi bạn gửi một đoạn text từ server tới client, thực tế đó là bạn đã gửi một dãy các byte dữ liệu, client nhận được và decode thành text để hiển thị cho bạn

gửi file cũng tương tự, chỉ là gửi byte[] đi, giống như text mà thôi
khi client nhận được mảng byte, thì từ mảng đó, ghi ra cái file, thế là xong

đến đây thì phát sinh câu hỏi, vậy thì gửi qua gửi lại như vậy, làm sao biết cái nào là text, cái nào là file, nếu là file thì thông tin file là gì, ví dụ như filename???

lúc này thì cấu trúc dữ liệu mới tỏa sáng
thông điệp gửi đi, cần phải có cấu trúc, để khi nhìn vào, người ta biết nó là gì

// 1, với message gửi đi như này, thì không thể chứa được thông tin gì ngoài text cả
hello day nhau hoc

// 2
{"objectType":"text","data":"hello day nhau hoc"}

// cũng là 2 nhưng phiên bản cho mắt người nhìn cho dễ
{
    "objectType": "text",
    "data": "hello day nhau hoc"
}

{
    "objectType": "file",
    "filename": "hello.txt", // field này optional với điều kiện objectType là file
    "data": "aGVsbG8gZGF5IG5oYXUgaG9j" // nội dungfile text được đọc thành byte[], sau đó encode thành base64
}

đầu tiên, bạn cần phải có một design cấu trúc phù hợp, sau đó là chọn format (thường là xml hoặc json…), như ví dụ trên, mình đang sử dụng json
trước khi gửi, bạn cần đưa nó về format, ví dụ như mình đã ghi chú bên trên
sau khi client nhận được, chỉ việc parse file json thành object rồi xử lý thôi (là text thì hiển thị luôn, còn là file thì tiến hành chuyển field data (base64 text) đó thành byte[] rồi ghi vào file với file name lấy từ field filename …

2 Likes

B lien he m de duoc tro giup neu can nhe

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?