图片上传客户端与服务端

        //一万年太久,只争朝夕package uploadImg;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

/*建立Socket服务
 * 读取文件上传源
 * 获取输出流。将数据发送到服务端
 * 告诉服务端数据发送完毕。服务端停止读取
 * 读取服务端发回的数据
 *
 *
 *
 *
 * */
public class ImgClient {

    public static void main(String[] args) throws UnknownHostException, IOException {
        Socket s = new Socket("127.0.0.1", 10009);
        //建立Socket服务
        //加载目标文件
        FileInputStream file = new FileInputStream("c:\\0.jpg");
        //获取Socket输出流
        OutputStream outputStream = s.getOutputStream();
        byte[] buf = new byte[1024];
        int len = 0;
        //将目标文件读入byte数组
        while ((len = file.read(buf)) != -1) {
            outputStream.write(buf, 0, len);
        }
        s.shutdownOutput();
        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String readLine = bufIn.readLine();
        System.out.println(readLine);
        bufIn.close();
        file.close();
        s.close();

    }

}
package uploadImg;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ImgServer {
    /*
     * 建立ServerSockte服务 获取Sockte对象 Socket输入流 创建文件存储 多线程。并发 返回反馈结果到客户端 结束流
     */
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(10009);
        while (true) {
            Socket accept = ss.accept();
            new Thread(new UploadImg(accept)).start();
        }
    }

}
package uploadImg;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.io.OutputStream;
import java.io.PrintWriter;

public class UploadImg implements Runnable {
    private static final int SIZE = 1024 * 1024 * 2;
    private Socket s;

    public UploadImg(Socket s) {
        this.s = s;
    }

    @Override
    public void run() {

        int count = 0;
        String ip = s.getInetAddress().getHostName();
        System.out.println(ip + "....." + "connect");
        try {
            InputStream inputStream = s.getInputStream();

            File dir = new File("c:\\pic");
            if (!dir.exists()) {
                dir.mkdir();
            }
            File file = new File(dir, ip + ".jpg");
            while (file.exists()) {
                file = new File(dir, ip + "(" + (count++) + ").jpg");

            }
            FileOutputStream fos = new FileOutputStream(file);
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = inputStream.read(buf)) != -1) {
                fos.write(buf, 0, len);
                if (file.length() > SIZE) {
                    System.out.println(ip + "文件体积太大");
                    fos.close();
                    s.close();
                    System.out.println(ip + "..." + file.delete());
                    return;
                }
            }
            PrintWriter pw = new PrintWriter(s.getOutputStream());
            pw.println("上传成功");
            fos.close();
            s.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
时间: 2024-11-10 00:08:46

图片上传客户端与服务端的相关文章

图片上传oss--先拿server端签名再上传oss,返回id值

目前项目oss阿里云存储图片,图片上传主要步骤是:前端从服务端拿到签名signature,再上传到oss上busket里,上传成功返回图片id (imgId),最后再给server端: 注:官网上有个例子,也有封装的插件一个,可参考使用,[服务端签名直传并设置上传回调](https://help.aliyun.com/document_detail/31927.html?spm=5176.doc31923.2.2.RseG9d):但因技术有限,未使用: 项目使用angularjs开发的,常用方法

H5+上传注意要点及服务端代码

// 上传文件 function upload(num) { console.log("num:" + num); console.log("headImg.src.:" + headImg.src); if(num == 0 && headImg.src.indexOf('img/header.png') > -1) { plus.nativeUI.alert("请添加头像图片文件!"); return; } consol

Wince 6.0适用 .NET 使用HttpRequest的Post上传文件,服务端的Web API接收Post上传上来的文件 代码

//调用的示例 private string fileName = "InStorageData.csv"; string filePath = parentPath + CommonHelper.UPLOAD + "\\" + fileName;//文件的全路径含文件名称及扩展名 string strResult = CommonHelper.SendFile(filePath, new Uri(CommonHelper.strURL + "PostFo

h5上传视频到服务端,存到指定位置,url保存到数据库,最后以特定格式显示

一.视频上传到服务器,存到指定位置. 试过n个方法中,最最靠谱的一个: http://www.cnblogs.com/xdp-gacl/p/4200090.html 二.url保存到数据库 1.项目中新建一个jdbc包 新建类 package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i

01 ftp上传简单示例服务端

import json import socket import struct server = socket.socket() server.bind(('127.0.0.1',8001)) server.listen() conn,addr = server.accept() #首先接收文件的描述信息的长度 struct_data_len = conn.recv(4) data_len = struct.unpack('i',struct_data_len)[0] # 通过文件信息的长度将文

php form 图片上传至服务器上

本文章也是写给自己看的,因为写的很简洁,连判断都没有,只是直接实现了能上传的功能. 前台: <form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="myfile" /> <input type="submit" value=

.net core CKEditor 图片上传

最近在玩 asp.net core,不想用UEditor,想使用CKEditor.故需要图片上传功能. 废话不多说,先上效果图: CKEditor 前端代码: <text id="content" name="content"></text> <script> CKEDITOR.replace('content'); </script> CKeditor config.js 配置代码:需要配置图片上传路径 CKEDIT

js 利用iframe和location.hash跨域解决的方法,java图片上传回调JS函数跨域

奶奶的:折腾了我二天,最终攻克了!网上有非常多样例. 但跟我的都不太一样,费话不多说了,上图   上代码: IE ,firefix,chrome 測试通过 js :这个主页面,部分代码, function submitUpload(id){ $("#imgSrc" + id +"").attr("alt", "图片上传中--"); var imgID = id; if(id>0){ imgID = 1; } var fo

js 利用iframe和location.hash跨域解决办法,java图片上传回调JS函数跨域

奶奶的:折腾了我二天,终于解决了!网上有很多例子. 但跟我的都不太一样,费话不多说了,上图   上代码: IE ,firefix,chrome 测试通过 js :这个主页面,部分代码, function submitUpload(id){ $("#imgSrc" + id +"").attr("alt", "图片上传中--"); var imgID = id; if(id>0){ imgID = 1; } var for