C语言自学完备手册(33篇)

Android多分辨率适配框架

JavaWeb核心技术系列教程

HTML5前端开发实战系列教程

MySQL数据库实操教程(35篇图文版)

推翻自己和过往——自定义View系列教程(10篇)

走出思维困境,踏上精进之路——Android开发进阶精华录

讲给Android程序员看的前端系列教程(40集免费视频教程+源码)


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

概述

我们在开发过程中经常涉及到文件(图片、音频、压缩包等)的上传。绝大多数情况下,我们都采用第三方已经封装好的模块实现该功能。但是,它底层的实现原理是什么呢?我们可以自己动手实现文件的上传么?答案是肯定的!在此,我们使用Socket和IO流技术上传女神图片到服务器。

准备女神照片


景甜(Jing Tian),1988年7月21日出生于陕西省西安市,华语影视女演员。

2006年,景甜发行了个人首张音乐EP《你是谁》,并正式踏上演艺之路。
2010年,她凭借爱情片《我的美女老板》崭露头角 。
2011年,景甜因主演古装片《战国》而获得更多关注 。
2013年,其主演的《警察故事2013》 等三部电影合计票房超过12亿人民币 。
2014年,景甜主演了古装剧《班淑传奇》 。
2015年,其主演的传奇剧《大玉儿传奇》播出 。
2016年,她主演的魔幻片《长城》票房突破10亿人民币 。
2017年,景甜主演的宫廷剧《大唐荣耀》播出 。

客户端

package com.upload;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
/*** 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl*/
public class TCPUploadClient {public static void main(String[] args) {Socket socket=null;OutputStream outputStream=null;FileInputStream fileInputStream=null;InputStream inputStream=null;try {//创建与服务器通信的Socketsocket=new Socket(InetAddress.getLocalHost(), 10086);//获取Socket输出流outputStream=socket.getOutputStream();//指定待上传文件fileInputStream=new FileInputStream("E:\\beauty.jpg");//上传文件至服务端byte[] b=new byte[1024*1];int len=0;while((len=fileInputStream.read(b))!=-1) {outputStream.write(b, 0, len);}//关闭客户端输出流socket.shutdownOutput();//读取服务端返回的消息inputStream=socket.getInputStream();byte[] buf=new byte[1024*1];int length=0;while((length=inputStream.read(buf))!=-1) {String string=new String(buf, 0, length);System.out.println(string);}} catch (Exception e) {// TODO: handle exception}finally {if(outputStream!=null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}if(fileInputStream!=null) {try {fileInputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(inputStream!=null) {try {inputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(socket!=null) {try {socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

服务端

package com.upload;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*** 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl*/
public class TCPUploadServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket=new ServerSocket(10086);while(true) {Socket client=serverSocket.accept();HandleUploadRunnableImpl handleUploadRunnableImpl=new HandleUploadRunnableImpl(client);Thread thread=new Thread(handleUploadRunnableImpl);thread.start();}}}//处理上传文件的Runnable
class HandleUploadRunnableImpl implements Runnable{private Socket socket=null;private InputStream inputStream=null;private FileOutputStream fileOutputStream=null;private OutputStream outputStream=null;public HandleUploadRunnableImpl(Socket socket) {this.socket=socket;}@Overridepublic void run() {//获取客户端ipString ip=socket.getInetAddress().getHostAddress();try {//指定保存上传图片的目录File uploadDir=new File("D:\\upload");if(!uploadDir.exists()) {uploadDir.mkdir();}//指定文件保存的名称File file=new File(uploadDir,ip+".jpg");//读取客户端上传的文件并保存inputStream=socket.getInputStream();fileOutputStream=new FileOutputStream(file);byte[] b=new byte[1024*1];int len=0;while((len=inputStream.read(b))!=-1) {fileOutputStream.write(b, 0, len);}//向客服端返回消息outputStream = socket.getOutputStream();outputStream.write("上传完毕".getBytes());} catch (Exception e) {// TODO: handle exception}finally {if(inputStream!=null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if(fileOutputStream!=null) {try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if(outputStream!=null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}if(socket!=null) {try {socket.close();} catch (IOException e) {e.printStackTrace();}}}}}

运行测试

手把手教你上传女神照片到服务器相关推荐

  1. 手把手教Jsp上传文件(FileUpload+Servlet)

    本教程以Apache组织的commons项目中的FileUpload项目做为jsp的文件上传组件,FileUpload项目完全尊守RFC1867规范中 关于在HTTP request 中通过Post方 ...

  2. 利用exif.js解决手机上传竖拍照片旋转90\180\270度问题

    利用exif.js解决手机上传竖拍照片旋转90\180\270度问题 参考文章: (1)利用exif.js解决手机上传竖拍照片旋转90\180\270度问题 (2)https://www.cnblog ...

  3. PHP 如何阻止用户上传成人照片或者裸照

    在这份教程中,我们将会学习到如何阻止用户通过PHP上传成人照片或者裸照. 示例   下载 我在phpclasses.org上面偶然发现一个很有用的,由Bakr Alsharif开发的可以帮助开发者基于 ...

  4. ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...

    本篇文章给大家带来的内容是关于Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 问题 A ...

  5. 1m照片的宽和高是多少_1m等于多少kb(上传1m照片是多大尺寸)

    相信很多人对于1m等于多少kb(上传1m照片是多大尺寸)并不是非常的了解,因此小编在这里为您详解的讲解一下相关信息! 1024 1M=多少KB 1GB等于1024MB 1MB等于1024KB 1KB等 ...

  6. 计算机二级上传不了照片,2017全国计算机二级考试报名须知:上传电子照片

    原标题:2017全国计算机二级考试报名须知:上传电子照片 2017下半年计算机二级报名预计在2017年6月举行,每年都会有部分考生由于对报考流程的不了解,造成报名失败,为了防止此类事情的发生,节约大家 ...

  7. 利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题

    html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

  8. 上传的照片大小规格限制

    对上传照片大小规格限制,有两种方式. 第一种,是按照照片的宽度,高度.来进行限制 /** * <p>Title: main * <p>Description: 获取上传照片的长 ...

  9. 报名 | NVIDIA线下交流会:手把手教你搭建TensorFlow Caffe深度学习服务器

    7月21日(周六)下午14:30,量子位与NVIDIA英伟达开发者社区联合举办线下交流会,拥有丰富一线开发经验的NVIDIA开发者社区经理Ken He,将手把手教你搭建TensorFlow & ...

最新文章

  1. linux c++开发环境_使用 VM VirtualBox 搭建完善的Linux开发环境
  2. OpenGL pipeline (very important)
  3. spring框架mvc框架_Spring的MVC测试框架入门–第1部分
  4. 除阿里、网易和字节外,杭州居然还有这么多互联网公司!
  5. 中国特夫行业市场供需与战略研究报告
  6. Linux命令解释之rm
  7. 2 Linux基本命令复习2
  8. 基于Python获取一些打印机简单信息
  9. 基于MATLAB的人眼开度疲劳检测识别
  10. 人民币转换美金的c语言代码大全,美元换算(人民币换算)
  11. struts2系列-Real-BUUCTF平台
  12. hdu2639(01背包变形-第k大背包)
  13. angularjs 关于Module 'ngLocale' is not available! is misleading
  14. kafka之broker
  15. R语言之基本统计分析
  16. SendMail.java
  17. 最给人启迪的30条编程名言
  18. 通达信版弘历软件指标_通达信弘历指标公式
  19. c语言while语句求圆周率,[求助]圆周率程序
  20. 修改Win10默认盘

热门文章

  1. Blender 安装
  2. 用一个空置U盘(大白菜)PE重装系统
  3. Django的ManyToManyField(多对多)的使用以及through的作用
  4. matlab学习(1)-------matlab介绍及基本语法
  5. stm32建立标准的工程模板
  6. 机器人机构学基础(朱大昌)第四章部分习题答案
  7. 华为Matebook安装Manjaro Linux的不完全攻略
  8. 【JTAG】1687协议详解
  9. Java运算符与Scanner键盘输入
  10. 遥感基础知识——电磁波