zoukankan      html  css  js  c++  java
  • Android 上传文件到XP

    Android部分:

                  AsyncHttpClient client = new AsyncHttpClient();
                        RequestParams requestParams = new RequestParams();
                        File file = new File("/sdcard/DCIM/Camera/IMG_20140322_180445.jpg");
                        try {
                            requestParams.put("file", file);
                            requestParams.put("userid", "张三");
                        } catch (FileNotFoundException e) {
                            Log.d("T", e.getMessage());
                        }
    
                        client.post("http://192.168.30.30:9178/?fn=upload", requestParams,
                                new AsyncHttpResponseHandler() {
                                    @Override
                                    public void onSuccess(String response) {
                                        Log.d("T", response);
                                    }
    
                                    @Override
                                    public void onFailure(Throwable error, String content) {
                                        Log.d("T", content);
                                        super.onFailure(error, content);
                                    }
                                });
    View Code

    服务端部分:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using HttpServer.HttpModules;
    using System.Net;
    using System.IO;
    using System.Threading;
    using HttpServer.FormDecoders;
    using System.Collections.Concurrent;
    namespace TestHttpServer
    {
        public partial class Form1 : Form
        {
            private HttpServer.HttpServer _server = null;
            public Form1()
            {
                InitializeComponent();
                Console.WriteLine("UI:" + Thread.CurrentThread.ManagedThreadId);
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                _server = new HttpServer.HttpServer();
                _server.Add(new FileUpHttpModule());
                //_server.Add(new NotHandleModule());
                _server.Start(IPAddress.Any, int.Parse(textBox1.Text));
                Console.WriteLine("开启服务!");
            }
            protected override void OnClosed(EventArgs e)
            {
                UploadFileMonitor.Instance.OnFileUpload -= this.DisplayPic;
                if (_server != null)
                {
                    _server.Stop();
                    Console.WriteLine("关闭服务!");
                }
                base.OnClosed(e);
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                new frmClient().Show();
            }
            private void DisplayPic(string filename)
            {
                if (this.InvokeRequired)
                {
                    Console.WriteLine("需要异步调用!");
                    this.Invoke( (Action) (() => { DisplayPic(filename); }));
                }
                else
                {
                    pictureBox1.ImageLocation = filename;
                    //pictureBox1.Refresh();
                }
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                UploadFileMonitor.Instance.OnFileUpload += this.DisplayPic;
            }
        }
    
        #region 上传监控
        public class UploadFileMonitor
        {
            const int C_MaxQueueLength = 100;
            public delegate void OnFileUploadHandler(string filename);
            private ConcurrentQueue<String> _Queue = new ConcurrentQueue<string>();
            public event OnFileUploadHandler OnFileUpload;
            private static readonly UploadFileMonitor _Instacne = new UploadFileMonitor();
            public static UploadFileMonitor Instance
            {
                get { return _Instacne; }
            }
            private UploadFileMonitor() { }
    
            public void Add(string filename)
            {
                _Queue.Enqueue(filename);
                while (_Queue.Count > C_MaxQueueLength +10)
                {
    
                    String retrive = "";
                    _Queue.TryDequeue(out retrive);
                }
                if (OnFileUpload != null)
                {
                    try
                    {
                        OnFileUpload(filename);
                    }
                    catch { }
                }
            }
        }
        #endregion
        public class FileUpHttpModule : HttpModule
        {
    
            public override bool Process(HttpServer.IHttpRequest request, HttpServer.IHttpResponse response, HttpServer.Sessions.IHttpSession session)
            {
                try
                {
                    Console.WriteLine("work:" + Thread.CurrentThread.ManagedThreadId);
                    var it = request.QueryString["fn"];
                    Console.WriteLine("userId:" + request.Form["userid"].Value);
                    Console.WriteLine(it);
                    String filename = "";
                    foreach (var file in request.Form.Files)
                    {
    
                        filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.Ticks + Path.GetExtension(file.UploadFilename));
                        File.Copy(file.Filename, filename, true);
                        UploadFileMonitor.Instance.Add(filename);
                    }
                    StreamWriter writer = new StreamWriter(response.Body);
                    if (string.IsNullOrWhiteSpace(filename))
                    {
                        writer.WriteLine("no upload file!");
                    }
                    else
                    {
                        writer.WriteLine(filename);
                    }
                    writer.Flush();
    
                
                }
                catch (Exception ex)
                {
                    StreamWriter writer = new StreamWriter(response.Body);
                    writer.WriteLine(ex.Message);
                    writer.Flush();
                
                }
             
                 return true;
                
            }
        }
    }
    View Code
  • 相关阅读:
    oracle 主键自动地址实现
    解构赋值
    那些朋友那些话系列
    那些朋友那些话
    白鹭记事
    该如何存在
    上海秋季HCC小记
    For the person you never see again
    寻城记
    2013年的国庆
  • 原文地址:https://www.cnblogs.com/wdfrog/p/3680677.html
Copyright © 2011-2022 走看看