用java pyhont通过HTTP协议传输文件流
// 代码网上抄的 忘记链接了 抱歉哈
package upload;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL; public class uploadtest { public uploadtest() {
// TODO Auto-generated constructor stub
} public static void main(String[] args)
{
try {
upLoadByCommonPost("http://127.0.0.1/upload_file.php");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } private static void upLoadByCommonPost(String uploadUrl) throws IOException {
String end = "\r\n";
String twoHyphens = "--";
String boundary = "******";
URL url = new URL(uploadUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
httpURLConnection.setChunkedStreamingMode(128 * 1024);// 128K 应该按照文件大小来定义
// 允许输入输出流
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setUseCaches(false);
// 使用POST方法
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
httpURLConnection.setRequestProperty("Charset", "UTF-8");
httpURLConnection.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" + boundary); DataOutputStream dos = new DataOutputStream(
httpURLConnection.getOutputStream());
dos.writeBytes(twoHyphens + boundary + end);
dos.writeBytes("Content-Disposition: form-data; name=\"uploadfile\"; filename=\"1.jpg\";" + end);
dos.writeBytes("Content-Type: image/jpeg" + end);
dos.writeBytes(end); FileInputStream fis = new FileInputStream("d:\\1.jpg");
byte[] buffer = new byte[1024*100]; // 100k
int count = 0;
// 读取文件
while ((count = fis.read(buffer)) != -1) {
dos.write(buffer, 0, count);
}
fis.close();
dos.writeBytes(end);
dos.writeBytes(twoHyphens + boundary + twoHyphens + end);
dos.flush();
InputStream is = httpURLConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
String result;
while ((result=br.readLine()) != null){
System.out.println(result);
}
dos.close();
is.close();
}
}
再来个python的,用到了poster模块下载地址戳这
# -*- coding: utf-8 -*- import urllib2 import urllib
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
params = {'uploadfile': open(formvalue['file'], "rb")}
datagen, headers = multipart_encode(params)
request = urllib2.Request(url, datagen, headers)
return urllib2.urlopen(request).read().decode("utf_8_sig")
服务器代码PHP的
<?php
var_dump($_FILES);
if (//($_FILES["type"] == "image/gif")
//|| ($_FILES["type"] == "image/jpg")
//|| ($_FILES["type"] == "image/jpeg")
($_FILES['uploadfile']["size"] < 200000)){
if ($_FILES['uploadfile']["error"]>0){
echo "Error: ".$_FILES['uploadfile']["error"]."<br>";
}
else {
echo "Upload: ". $_FILES['uploadfile']["name"]."<br>";
echo "Type:".$_FILES['uploadfile']["type"]."<br>";
echo "Size:".($_FILES['uploadfile']["size"]/1024)."kB<br>";
echo "Stored in: ".$_FILES["tmp_name"]; if (file_exists("upload/".$_FILES['uploadfile']["name"]))
{
echo $_FILES['uploadfile']["name"]." already exists";
}
else
{
move_uploaded_file($_FILES['uploadfile']["tmp_name"],"upload/".$_FILES['uploadfile']["name"]);
echo "Stored in: "."upload/".$_FILES['uploadfile']["name"];
}
}
}
else {
echo "Invalid file";
} ?>
用java pyhont通过HTTP协议传输文件流的更多相关文章
- Netty--使用TCP协议传输文件
简介: 用于将文件通过TCP协议传输到另一台机器,两台机器需要通过网络互联. 实现: 使用Netty进行文件传输,服务端读取文件并将文件拆分为多个数据块发送,接收端接收数据块,并按顺序将数据写入文件. ...
- 开发错误日志之FTP协议传输文件问题
从开发端用FTP协议向服务器(Linux系统)传输文件时,cat -A查询文件内容中行尾会有^M出现. 解决方案:改用SFTP协议上传文件.
- 一个ftp协议传输文件之后执行脚本无法工作的情况
作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 移植一个文件系统时候,我在window下git clone了对方仓库源码,然后用FileZ ...
- ZYNQ使用ymodem协议传输文件
SDK: V2014.4 协议: Ymodem 工具: USB转UART转接线.xshell6软件 可实现各种文件传输,大小不限,只是速度很慢 参考原代码如下: /****************** ...
- 自己动手写RTP服务器——用RTP协议传输TS流
上一篇文章我们介绍了关于RTP协议的知识,那么我们现在就自己写一个简单的传输TS流媒体的RTP服务器吧. 预备知识 关于TS流的格式:TS流封装的具体格式请参考文档ISO/IEC 13818-1.这里 ...
- python调用Moxa PCOMM Lite通过串口Ymodem协议发送文件
本文采用python 2.7编写. 经过长期搜寻,终于找到了Moxa PCOMM Lite.调用PCOMM.DLL可以非常方便的通过串口的Xmodem.Ymodem.Zmodem等协议传输文件,而无需 ...
- 使用HttpClient发送文件流到服务器端
适用场景:网络绝对路径的URL文件或图片,不存储到本地,转换成stream,直接使用HTTPClient传送到SpringBoot的服务端,将文件存储下来,并返回一个文件地址.目前分层架构的系统越来越 ...
- 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream
package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...
- Vue.js +pdf.js 处理响应pdf文件流数据,前端转图片预览不可下载
使用场景及原因 实际业务中,一些说明书或协议仅支持用户在线预览,为避免用户自行下载,并进行修改,引发纠纷,特将文件已文件流的形式,传给前端并转为图片显示,此时可能会有人问,为什么不直接在后端转图片,前 ...
随机推荐
- post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
好吧, 除了哲学方式的回答以外,下面是一个浏览器从业人员的看法 事实上GET 和 POST 在实践上面有非常大的区别,这两种方法在语义上面并非能互相取代. POST 是否比 GET 安全 是的, PO ...
- sendmsg: no buffer space available
今天在将项目从虚拟机上移植到真实机器上面的时候,发现问题,总是不成功,最后判断是userspace的程序没有向kernel发送消息成功,因为无法触发kernel的行为,但是userspace显示正常. ...
- C++豆知识索引
C++Memset误区 C++ 哈希表 C++类型转换[转] C++ sizeof C++ 路径中\\与/
- C++图结构的图结构操作示例
示例代码: /* By qianshou 2013/10/5明天就要开学了~哎~ */ #include<iostream> using namespace std; /********* ...
- Xshell远程连接Ubuntu
在Ubuntu系统下执行命令: sudo apt-get install openssh-server 然后,在Xshell中新建会话,输入Ubuntu系统的IP,以及用户名.密码. 但是经常会出现连 ...
- [深入React] 3.JSX的神秘面纱
<div> <List /> </div> 会被编译为: React.createElement("div",null, React.creat ...
- JAXB--学习2
一.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...
- 转义字符和ASCII
一.字符(char) 数字(int) 屏幕显示 '\n' 10 换行 '\0' ...
- sys--system-sysdba-sysoper用户区别
当Oracle 数据库安装完毕后,系统会自动创建sys和system这两个帐户.1.sys :缺省密码为CHANGE_ON_INSTALL ,且被授予DBA角色system :缺省密码为MANAGER ...
- Centos 下mysql安装配置
一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake,从http://www.cmake ...