Java實(shí)現(xiàn)的簡(jiǎn)單圖片上傳功能示例
本文實(shí)例講述了Java實(shí)現(xiàn)的簡(jiǎn)單圖片上傳功能。分享給大家供大家參考,具體如下:
import java.io.*;
import java.net.*;
/*
*發(fā)送端
*/
class picsend
{
public static void main(String[] args) throws Exception
{
if(args.length!=1)
{
System.out.println("請(qǐng)選擇一張.jpg圖片");
return;
}
File file = new File(args[0]);
if (!(file.exists() && file.isFile()))
{
System.out.println("圖片有問題(不是文件或不存在)");
return;
}
if(!file.getName().endsWith(".jpg"))
{
System.out.println("圖片格式不對(duì),請(qǐng)重新選擇圖片");
return;
}
if(file.length()>1024*1024*10)
{
System.out.println("圖片過大,無法上傳");
return;
}
Socket s = new Socket("192.168.33.1",10006);//建立服務(wù)
FileInputStream fis = new FileInputStream("d:\\美女.jpg");//讀取圖片
OutputStream out = s.getOutputStream();//讀到的寫入
byte [] b = new byte[1024];
int len = 0;
while((len = fis.read(b))!= -1)
{
out.write(b,0,len);
}
s.shutdownOutput();//標(biāo)記結(jié)束
InputStream in = s.getInputStream();//讀服務(wù)端返回?cái)?shù)據(jù)
byte [] bin = new byte[1024];
int num = in.read(bin);
System.out.println(new String(bin,0,num));
fis.close();
s.close();
}
}
class picThread implements Runnable
{
private Socket s;
picThread(Socket s)
{
this.s = s;
}
public void run()
{
int count = 1;
String ip = s.getInetAddress().getHostAddress();//得到ip
try
{
System.out.println(ip+".............connect");
InputStream in = s.getInputStream();//讀到流中數(shù)據(jù)
File file = new File(ip+"("+(count)+")"+".jpg");
while(file.exists())//判斷文件是否存在
file = new File(ip+"("+(count++)+")"+".jpg");
FileOutputStream fos = new FileOutputStream(file);//寫入
byte [] b = new byte[1024];
int len = 0;
while((len = in.read(b))!=-1)
{
fos.write(b,0,len);
}
OutputStream out = s.getOutputStream();//寫入服務(wù)端傳過來數(shù)據(jù)
out.write("上傳成功!".getBytes());
fos.close();
s.close();
}
catch (Exception e)
{
throw new RuntimeException("上傳失敗");
}
}
}
/*
*服務(wù)端
*/
class picrece
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10006);
while(true)
{
Socket s = ss.accept();//接收
new Thread(new picThread(s)).start();
}
}
}
運(yùn)行效果圖如下:


更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java圖片操作技巧匯總》、《java日期與時(shí)間操作技巧匯總》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》及《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》。
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java實(shí)現(xiàn)圖片上傳至服務(wù)器功能(FTP協(xié)議)
- Java實(shí)現(xiàn)的圖片上傳工具類完整實(shí)例
- Java Struts圖片上傳至指定文件夾并顯示圖片功能
- java使用CKEditor實(shí)現(xiàn)圖片上傳功能
- Java通過jersey實(shí)現(xiàn)客戶端圖片上傳示例
- Java實(shí)現(xiàn)圖片上傳到服務(wù)器并把上傳的圖片讀取出來
- Java+mysql本地圖片上傳數(shù)據(jù)庫及下載示例
- java web圖片上傳和文件上傳實(shí)例
- java web圖片上傳和文件上傳實(shí)例詳解
- java實(shí)現(xiàn)圖片上傳至本地實(shí)例詳解
相關(guān)文章
SpringCloud Ribbon負(fù)載均衡實(shí)例解析
這篇文章主要介紹了SpringCloud Ribbon負(fù)載均衡實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
java冷知識(shí):javac AbstractProcessor詳解
這篇文章主要介紹了java冷知識(shí):javac AbstractProcessor詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
關(guān)于idea一直卡在build不動(dòng)的解決方案
這篇文章主要介紹了idea一直卡在build不動(dòng)的解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
java~springboot~ibatis數(shù)組in查詢的實(shí)現(xiàn)方法
這篇文章主要介紹了java~springboot~ibatis數(shù)組in查詢的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-09-09
Spring解讀@Component和@Configuration的區(qū)別以及源碼分析
通過實(shí)例分析@Component和@Configuration注解的區(qū)別,核心在于@Configuration會(huì)通過CGLIB代理確保Bean的單例,而@Component不會(huì),在Spring容器中,使用@Configuration注解的類會(huì)被CGLIB增強(qiáng),保證了即使在同一個(gè)類中多次調(diào)用@Bean方法2024-10-10
Spring Boot高級(jí)教程之使用Redis實(shí)現(xiàn)session共享
這篇文章主要為大家詳細(xì)介紹了Spring Boot高級(jí)教程之使用Redis實(shí)現(xiàn)session共享,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
SpringBoot中的RestTemplate使用方法詳解
這篇文章主要介紹了SpringBoot中的RestTemplate使用方法詳解,為了方便使用,這里我封裝成一個(gè)工具類來靜態(tài)調(diào)用RestTemplate,基于SpringBoot2.4.2版本,需要的朋友可以參考下2024-01-01
從零開始Java實(shí)現(xiàn)Parser?Combinator
這篇文章主要為大家介紹了從零開始Java實(shí)現(xiàn)Parser?Combinator過程及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05

