博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net 写文件上传下载webservice
阅读量:5056 次
发布时间:2019-06-12

本文共 2311 字,大约阅读时间需要 7 分钟。

using System;

using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.IO;
using System.Text;

namespace UpDownFile

{
    /// <summary>
    /// Service1 的摘要说明
    /// </summary>
    [WebService(Namespace = "")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class UpDownFile : System.Web.Services.WebService
    {
        private static string filesavepath = System.Configuration.ConfigurationManager.AppSettings.Get("filepath");
        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        [WebMethod]
        public bool DownFile(string filename,out byte[] bytes)
        {
            string filepath = filesavepath + filename;
            LogWrite(filepath);
            if (File.Exists(filepath))
            {
                try
                {
                    FileStream s = File.OpenRead(filepath);
                    bytes = ConvertStreamToByteBuffer(s);
                    s.Close();
                    return true;
                }
                catch
                {
                    bytes = new byte[0];
                    return false;
                }
            }
            else
            {
                bytes = new byte[0];
                return false;
            }
        }

        public byte[] ConvertStreamToByteBuffer(Stream s)

        {
            MemoryStream ms = new MemoryStream();
            int b;
            s.Seek(0, 0);
            while ((b = s.ReadByte()) !=-1)
            {
                ms.WriteByte((byte)b);
            }
            return ms.ToArray();
        }

        [WebMethod]

        public bool UpFile(byte[] data, string filepath, string filename)
        {
            try
            {
                filepath = filesavepath + filepath;
                if (!Directory.Exists(filepath))
                {
                    Directory.CreateDirectory(filepath);
                }
                if (Directory.Exists(filepath))
                {
                    string fullname = filepath + filename;
                    if (File.Exists(fullname))
                    {
                        File.Delete(fullname);
                    }
                    FileStream fs = File.Create(fullname);
                    fs.Write(data, 0, data.Length);
                    fs.Close();
                    return true;
                }
                else return false;
            }
            catch
            {
                return false;
            }
        }

        protected bool LogWrite( string content)

        {
            try
            {
                //读取
                string file = "C:\\11111.txt";
                StreamReader sr = new StreamReader(file, true);
                string s = sr.ReadLine();
                sr.Close();
                //写入 与源文件字符相加
                StreamWriter sw = new StreamWriter(file, true, Encoding.UTF8);
                sw.WriteLine(s + content);
                sw.Close();
                return true;
            }
            catch (Exception ex)
            {
                //Response.Write(ex.Message.ToString());
                return false;
            }
        }

    }
}

 

注意:一定要加 s.Seek(0, 0);否则下载回来的文件数据会有丢失。

 

 

转载于:https://www.cnblogs.com/caowei-it/archive/2013/04/11/4145782.html

你可能感兴趣的文章
C# 实现Bresenham算法(vs2010)
查看>>
基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装
查看>>
list 容器 排序函数.xml
查看>>
存储开头结尾使用begin tran,rollback tran作用?
查看>>
Activity启动过程中获取组件宽高的五种方式
查看>>
java导出Excel表格简单的方法
查看>>
SQLite数据库简介
查看>>
利用堆实现堆排序&amp;优先队列
查看>>
Mono源码学习笔记:Console类(四)
查看>>
Android学习路线(十二)Activity生命周期——启动一个Activity
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
App.config自定义节点读取
查看>>
unity3d根据手机串号和二维码做正版验证
查看>>
二十六、Android WebView缓存
查看>>
django Models 常用的字段和参数
查看>>