用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模块下载地址戳这

1# -*- 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")}
2     datagen, headers = multipart_encode(params)
3     request = urllib2.Request(url, datagen, headers)
4     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";
    }

?>
时间: 2025-01-20 00:53:32

用java pyhont通过HTTP协议传输文件流的相关文章

基于ssh协议传输文件例子

使用python模块:paramiko,optparse __author__ = 'Administrator'import paramikoimport sysfrom optparse import OptionParserimport osdef exit_code(code): os.system('pause') sys.exit(code)def uploadfile(localfile,ip): if not os.path.exists(localfile): print '%

自己动手写RTP服务器——用RTP协议传输TS流

上一篇文章我们介绍了关于RTP协议的知识,那么我们现在就自己写一个简单的传输TS流媒体的RTP服务器吧. 预备知识 关于TS流的格式:TS流封装的具体格式请参考文档ISO/IEC 13818-1.这里我们只需要了解一些简单的信息就好.首先TS流是有许多的TS Packet组成的,每个TS Packet的长度固定为188 bytes,每个packet都是以sync_byte:0x47开头. MTU(Maximum Transmission Unit): 最大传输单元.是指一种通信协议的某一层上面所

FTP传输文件(hcl模拟器的操作)

使用FTP协议传输文件是非常方便的. 设备作为FTP客户端:用户在设备的命令行终端上执行ftp命令,建立设备与远程FTP服务的连接,下载服务器上的文件或上传本地文件. 设备作为FTP服务器:用户在其他主机上运行FTP客户端程序,登陆到设备上执行文件的上传和下载. 主要配置命令包括以下: 1:首先开启FTP服务:ftp service enable 2:创建用户:local-user hu 3:配置用户类型和密码:password simple 123 service-type ftp

传输文件

摘要:本文介绍linux下的几种网络共享文件的传输:NFS.Samba.FTP及基于SSH传输协议的sftp.这里仅介绍如何使用已有共享资源,对于服务器的配置暂不介绍.1.linux间的网络硬盘:NFS.NFS目前只用于在linux和UNIX主机间共享文件系统.通过NFS可以方便地将一台linux(或者UNIX)主机上的文件系统挂载到本地.当然,这要求对方主机开启了NFS服务器,并对共享的文件系统做了相关的设置.(1)如何安装NFS文件系统呢? 与安装本地文件系统一样,区别在于需要给mount命

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议)

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议) 为了传输文件或者目录,我们使用 Ganymed SSH2中的SCPClient类,这个类实现了scp命令功能. 下面的代码包含了传输单个文件和传输目录的功能: package com.doctor.ganymed_ssh2; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io

java socket通信-传输文件图片--传输图片

ClientTcpSend.java   客户端发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.InetSocketAddress; import java.net.Socket; public class ClientTcpSend { public static String clien

打通windows和Linux下的传输问题解决只能使用SSH协议下的22端口来传输文件(Openssh for windows)

目的:打通windows和Linux下的传输问题解决只能使用SSH协议下的22端口来传输文件 环境: windows IP192.168.1.120 Linux IP192.168.101 方法: 安装opensshfor windows (次软件开源并增加ssh协议将windows模拟成Unix环境) 安装完软件导入本地用户或者域用户 进入到bin目录下面执行 cd "c:\Program Files(x86)\OpenSSH\bin" mkgroup -l >>..\e

Java使用Socket传输文件遇到的问题(转)

1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决了问题. 个人认为可能是传输过程中,接收端向磁盘写速度有点慢,被后面的覆盖导致错误. //---------------------------------------------------------------------------------------------------------

TCP协议传输大文件读取时候的问题

TCP协议传输大文件读取时候的问题 大文件传不完的bug 我们在定义的时候定义服务端每次文件读取大小为10240, 客户端每次接受大小为10240 我们想当然的认为客户端每次读取大小就是10240而把客户端的读下来的文件想当然大小每一次都加上10240 而实际上服务端发送文件send每次发送不一定是一次性把10240的文件传送完,可能分了好几次进行发送至缓冲区这我们实际文件大小就不一定是10240 解决办法: 1.对于每次服务端所发送的文件内容及大小都发送给客户端,让客户端一一对应读取 2.实时