1. 程式人生 > >java socket 檔案上傳 有檔名

java socket 檔案上傳 有檔名

通過學習網上的一些程式碼寫出了這個,主要是通過socket,客戶端上傳檔案給伺服器,然後伺服器獲取檔案,放在伺服器根目錄下。可上傳各種檔案

Clint

package socketfile;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Scanner;


public class Client {
    public static void main(String[] args) {
        int length = 0;
        byte[] sendBytes = null;
        Socket socket = null;
        DataOutputStream dos = null;
        FileInputStream fis = null;
        OutputStream outputstream = null;  
        try {
            try {
            Scanner sc=new Scanner(System.in);
            System.out.println("請輸入地址:");
            String s=sc.next();
                socket = new Socket();
                socket.connect(new InetSocketAddress("127.0.0.1", 33456),
                               10 * 1000);
                outputstream = socket.getOutputStream();  
                outputstream.write(s.getBytes());// 向伺服器傳送訊息 
                
                
                dos = new DataOutputStream(socket.getOutputStream());
                File file = new File(s);
                fis = new FileInputStream(file);
                sendBytes = new byte[1024]; 
                while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {
                    dos.write(sendBytes, 0, length);
                    dos.flush();
                }
            } finally {
                if (dos != null)
                    dos.close();
                if (fis != null)
                    fis.close();
                if (socket != null)
                    socket.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

Server

package socketfile;
import java.net.*;
import java.io.*;


public class Server implements Runnable {
    public static void main(String[] args) {
        try {
            final ServerSocket server = new ServerSocket(33456);
            Thread th = new Thread(new Runnable() {
                public void run() {
                    while (true) {
                        try {
                            System.out.println("開始監聽...");
                            Socket socket = server.accept();
                            System.out.println("有連結");
                            receiveFile(socket);
                        } catch (Exception e) {
                        }
                    }
                }
            });


            th.run(); //啟動執行緒執行
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public void run() {
    }


    public static void receiveFile(Socket socket) {
        byte[] inputByte = null;
        byte[] serverSay = new byte[1000];
        int length = 0;
        DataInputStream dis = null;
        FileOutputStream fos = null;
        InputStream inputstream = null; 
        try {
            try {
            inputstream = socket.getInputStream();  
            int len = inputstream.read(serverSay);// 接受伺服器訊息  
                 System.out.println( new String(serverSay, 0, len));// 客戶端控制檯顯示伺服器返回的資訊
                 String filename=new String(serverSay,0,len);
                 String[] sa=filename.split("\\/");

//獲取檔名,同時賦值,放在伺服器目錄下。
                 String newname="./"+sa[sa.length-1];
           
           
                dis = new DataInputStream(socket.getInputStream());
                fos = new FileOutputStream(new File(newname));
                inputByte = new byte[1024];
                System.out.println("開始接收資料...");
                while ((length = dis.read(inputByte, 0, inputByte.length)) > 0) {
                    System.out.println(length);
                    fos.write(inputByte, 0, length);
                    fos.flush();
                }
                System.out.println("完成接收");
            } finally {
                if (fos != null)
                    fos.close();
                if (dis != null)
                    dis.close();
                if (socket != null)
                    socket.close();
            }
        } catch (Exception e) {
        }
    }
}

相關推薦

java socket 檔案 檔名

通過學習網上的一些程式碼寫出了這個,主要是通過socket,客戶端上傳檔案給伺服器,然後伺服器獲取檔案,放在伺服器根目錄下。可上傳各種檔案 Clint package socketfile; import java.io.DataOutputStream; import j

java httpclient檔案,springmvc作為伺服器端接收檔案,以及檔名亂碼的解決方法

最近由於專案中需要一個檔案上傳(基於http)的功能,遇到一些問題,故寫此部落格防止後面遺忘。 檔案上傳功能需要一個客戶端,一個伺服器端,由於客戶端不是在前臺(jsp,html)觸發,而是在java中進行請求,於是採用的org.apache.commons.

java web檔案與下載

jsp程式碼(檔案上傳) <form id="upLoad" method="post">

java檔案與下載

一.檔案上傳 1.注意: jsp提交方式必須為post 必須採用複雜格式 : enctype=“multipart/form-data” <form action="/upload" method="post" enctype="multipart/form

java web 檔案的總結

前言 1. 關於enctype=”multipart/form-data”: 對於表單enctype屬性,w3school解釋如下:規定在傳送到伺服器之前應該如何對錶單資料進行編碼,預設的,表單資料會編碼為 “application/x-www-form-urlencoded” 就

HTTP POST請求報文格式分析與Java實現檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java pdf 檔案

上傳型別 accept =".pdf" 限制只有pdf的可以上傳 <form action="clientCreditQueryOrder_importFile.do" id="form2" enctype="multipart/form-data" method="post"

java實現檔案_後端

maven: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <ver

Java檔案及下載、限制檔案大小

1、後端部分       Controller程式碼 // 上傳 @PostMapping("upload") @ResponseBody public Result upload(MultipartFile files, I

Java-多檔案

1.Http請求 1:enctype="multipart/form-data" 開啟檔案上傳屬性,必須設定 2:method="post" 提交方式必須改 3:<input type="file" multiple="multiple" /> multiple 屬

Java Excel檔案

需求,前端使用者上傳Excel檔案,後臺讀取解析檔案,做一系列處理後插入資料庫。 1.前臺程式碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t

Java實現檔案和下載

上面的博文我寫了Java對檔案操作的功能https://blog.csdn.net/qq_24380635/article/details/83273359,這次記錄一下檔案上傳和下載的功能。看看兩者有什麼不同,就可以知道檔案操作和檔案上傳下載有什麼不同了。我也是一點點懂,也

H5+JAVA檔案,斷點續

斷點上傳能夠防止意外情況導致上傳一半的檔案下次上傳時還要從頭下載,網上有很多關於斷點的實現,這篇文章只是從前到後完整的記錄下一個可用的例項,由於生產環境要求不高,而且就是提供給一兩個人用,所以我簡化了諸多過程,不用flash,也不用applet,只是通過html5的新特性進行瀏覽器端的處理。

java檔案工具類

package util; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; i

Java Web 檔案

JSP程式碼: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD

JAVA SFTP檔案、下載及批量下載

Java Jsch  1.jsch官方API檢視地址(附件為需要的jar)  http://www.jcraft.com/jsch/  2.jsch簡介  JSch(Java Secure Channel)是一個SSH2的純Java實現。它允許你

java ftp檔案下載刪除

package ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStre

JAVA檔案和下載詳解

1、過濾器案例:通用字符集編碼過濾器 1.1 表單提交中文資料到servlet裡面會有亂碼,之前需要在每個servlet裡面都需要處理     編寫過濾器,把設定中文的程式碼寫到過濾器裡面,在每個servlet裡面不需要寫處理程式碼 1.2 增強類中的方法有三種方式 (1)

java實現檔案下載的三種方法

JSP+Servlet 一、檔案上傳下載原理 在TCP/IP中,最早出現的檔案上傳機制是FTP。它是將檔案由客戶端傳送到伺服器的標準機制。但是在jsp程式設計中不能使用FTP方法來上傳檔案,這是由jsp的執行機制所決定的。 通過為表單元素設定Method=“post” en

Java實現檔案

上傳程式碼分為web端和後端,注意事項已標明 <!-- web端程式碼 --> <!-- 注意 input必須有name屬性,名字無所謂。form中必須加上enctype這個屬性,且方法為post --> <form actio