如何通过http-post发送pdf文件

时间:2015-03-20 21:48:24

标签: pdf http-post httplistener

我需要通过HTTP POST发送PDF文件。

我正在使用第三方(nSoftware)dll发送它。

但我的问题是,如何在服务器端接收并保存它。

我用HTTPlistener尝试过,但无法做到。

有人可以帮我这个..

谢谢, 麦迪

1 个答案:

答案 0 :(得分:0)

我在下面试过..

    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        listener = new HttpListener();
        listener.Prefixes.Add("http://localhost:122/");            
        listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;

        listener.Start();
        this.listenThread1 = new Thread(new ParameterizedThreadStart(startlistener));
        listenThread1.Start();

    }
    private void startlistener(object s)
    {

        while (true)
        {
            ProcessRequest();

        }

    }
    private void ProcessRequest()
    {
        var result = listener.BeginGetContext(ListenerCallback, listener);
        result.AsyncWaitHandle.WaitOne();
    }

    private void ListenerCallback(IAsyncResult result)
    {
        var context = listener.EndGetContext(result);
        Thread.Sleep(1000);
        var data_text = new StreamReader(context.Request.InputStream, context.Request.ContentEncoding).ReadToEnd();
        var cleaned_data = System.Web.HttpUtility.UrlDecode(data_text);
        byte[] bytes = new byte[1024 * 1024];            
        int size = 1024 * 1024;
        context.Request.InputStream.Read(bytes, 0, size);
        using (FileStream fsNew = new FileStream("E:\\temp\\test.pdf", FileMode.Create, FileAccess.Write))
        {
            fsNew.Write(bytes, 0, bytes.Length);
        }
        context.Response.StatusCode = 200;
        context.Response.StatusDescription = "OK";
        MessageBox.Show(cleaned_data);
        context.Response.Close();
    }

有了这个,我就可以保存创建一个PDF但它没有打开,而且数据也不仅仅是原始PDF中的实际数据(我认为是http的一些标题)。

我希望这是有道理的......

谢谢, 马杜