java post 文件--图片
post 上传图片
写在前面的:
代码中标黄的地方“Content-Type: image/jpeg” ,服务器端得到文件才会是“xxx.jpeg”;
网上大多数代码都是“Content-Type: application/octet-stream” ,这时服务器端得到的文件是“xxx.octet-stream”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class PostFileTest { public static void main(String[] args) { String filePath = "E:\\2.jpg" ; String urlS = "http://localhost:8070/SpringMVCTest/hellofile/uploadfile" ; try { String boundary = "Boundary-b1ed-4060-99b9-fca7ff59c113" ; //Could be any string String Enter = "\r\n" ; File file = new File(filePath); FileInputStream fis = new FileInputStream(file); URL url = new URL(urlS); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setDoOutput( true ); conn.setDoInput( true ); conn.setRequestMethod( "POST" ); conn.setUseCaches( false ); conn.setInstanceFollowRedirects( true ); conn.setRequestProperty( "Content-Type" , "multipart/form-data;boundary=" + boundary); conn.connect(); DataOutputStream dos = new DataOutputStream(conn.getOutputStream()); //part 1 String part1 = "--" + boundary + Enter + "Content-Type: image/jpeg" + Enter + "Content-Disposition: form-data; filename=\"" +file.getName()+ "\"; name=\"file\"" + Enter + Enter; //part 2 String part2 = Enter + "--" + boundary + Enter + "Content-Type: text/plain" + Enter + "Content-Disposition: form-data; name=\"dataFormat\"" + Enter + Enter + "hk" + Enter + "--" + boundary + "--" ; System.out.println( "part1: " +part1); System.out.println( "part2: " +part2); byte [] fileBytes = new byte [fis.available()]; fis.read(fileBytes); dos.writeBytes(part1); dos.write(fileBytes); dos.writeBytes(part2); dos.flush(); dos.close(); fis.close(); System.out.println( "status code: " +conn.getResponseCode()); // 得到响应流 InputStream responseStream = conn.getInputStream(); // 获取响应 BufferedReader reader = new BufferedReader( new InputStreamReader(responseStream)); String line; StringBuilder message = new StringBuilder(); while ((line = reader.readLine()) != null ) { message.append(line); } // 获取返回信息 //return message.toString(); System.out.println( "return: " +message.toString()); conn.disconnect(); } catch (Exception e){ e.printStackTrace(); } } } |
参考
其他上传图片文件的方式:
标签:
JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY