zoukankan      html  css  js  c++  java
  • Java客户端通过Http发送POST请求上传文件到web服务器

    http://www.cnblogs.com/WilliamJiang/archive/2012/04/29/2475883.html

    1.朋友的一个需求,让我给他实现,需求是这样的,需要用ASP.net写一个页面负责处理客户端上传的文件,并根据传递的参数把文件保存到相应的目录。客户端是手机应用程序,因为没学过Android,所以我只是写了一个Java的Demo用来上传文件。

    服务端:

    复制代码
    public partial class _Default : System.Web.UI.Page
    {
    
        private string id = "";
        private string userName = "";
        private string type = "";
        private string fileName = "";
        //文件长度
        private long contentLength = 0;
        private static readonly string filePath = ConfigurationManager.AppSettings["filePath"];
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                id = Request["id"];
                userName = Request["user"];
                type = Request["type"];
                fileName = Request.Headers["FileName"];
                writeFile();
            }
        }
    
        /// <summary>
        /// 上传文件
        /// </summary>
        private void writeFile()
        {
            try
            {
                Stream stream = Request.InputStream;
                contentLength = stream.Length;
                string currentFilePath = filePath + userName;
                if (!Directory.Exists(currentFilePath))
                {
                    Directory.CreateDirectory(currentFilePath);
                }
    
                FileStream fileStream = File.Create(currentFilePath + @"" + fileName);
                //每次读取的1024个字节
                byte[] bytes = new byte[1024];
                
                int numReadByte = 0;
                while ((numReadByte = stream.Read(bytes, 0, 1024)) != 0)
                {
                    fileStream.Write(bytes, 0,numReadByte);
                }
                //关闭流
                stream.Close();
                fileStream.Close();
    
        }
    复制代码

    Java文件上传客户端示例,(几年没搞java有点生疏了):

    复制代码
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     *  
     * 只是写的一个示例,filePath,和FileName根据需要进行调整。
     */
    public class MyTest {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            String str="http://localhost:2906/Default.aspx?id=1&user=2&type=3";
            String filePath="D:\Wildlife.wmv";
            String fileName="Wildlife.wmv";
            try {
                URL url=new URL(str);
                HttpURLConnection connection=(HttpURLConnection)url.openConnection();
                connection.setDoInput(true);
                connection.setDoOutput(true);
                connection.setRequestMethod("POST");
                connection.addRequestProperty("FileName", fileName);
                connection.setRequestProperty("content-type", "text/html");
                BufferedOutputStream  out=new BufferedOutputStream(connection.getOutputStream());
                
                //读取文件上传到服务器
                File file=new File(filePath);
                FileInputStream fileInputStream=new FileInputStream(file);
                byte[]bytes=new byte[1024];
           int numReadByte=0; while((numReadByte=fileInputStream.read(bytes,0,1024))>0) { out.write(bytes, 0, numReadByte); }
    out.flush(); fileInputStream.close(); //读取URLConnection的响应 DataInputStream in=new DataInputStream(connection.getInputStream()); } catch (Exception e) { e.printStackTrace(); } } }
  • 相关阅读:
    String.Split()函数
    Java的位运算符具体解释实例——与(&amp;)、非(~)、或(|)、异或(^)
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    Java中Scanner的使用方法
    C++经典面试题
    人脸识别算法初次了解
    ShareSDK的简化压缩和使用样例
    hdu 1316 How Many Fibs? (模拟高精度)
    AABB包围盒、OBB包围盒、包围球的比較
    Windows 7系统安装MySQL5.5.21图解
  • 原文地址:https://www.cnblogs.com/alps/p/5562987.html
Copyright © 2011-2022 走看看