首页 > 其他分享 >向服务器上传文件

向服务器上传文件

时间:2024-12-27 12:53:39浏览次数:2  
标签:文件 fs new file 服务器 CustomFileInfo fileInfo 上传

//--------------------向服务器上传文件------

//浏览选择需要上传的文件
  private static bool Unzip(string address, string filezip)
    {
        //创建对话框
         OpenFileDialog ofd = new OpenFileDialog();
         ofd.Title = "请选择上传的文件";
         //规定文件类型
         ofd.Filter = "zip(*.zip)|*.zip;";
         //判断是否选择文件
          if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            //获得文件的完整路径(包括名字后后缀)
            FilePath = ofd.FileName;
            //计算文件KB大小.字节/1024
            txtFileSize.Text = Math.Round(new System.IO.FileInfo(FilePath).Length / 1024.0, 2).ToString();
        }

    }

//上传文件

private void UploadFileIng()
    {

        //截止文件名称
        string fileName = FilePath.Substring( FilePath.LastIndexOf("\\") + 1);
        //文件上传
        System.IO.FileInfo fileInfoIO = new System.IO.FileInfo(FilePath);
        FileStream fs = File.OpenRead(fileInfoIO.FullName);
        //获取文件MD5值
        try
        {
            int maxSiz = 1024 * 100;
            // 根据文件名获取服务器上的文件
            CustomFileInfo file = client.GetFileInfo(fileInfoIO.Name);
            if (file == null)
            {
                file = new CustomFileInfo();
                file.OffSet = 0;
            }
            file.Name = fileInfoIO.Name;
            file.Length = fs.Length;
            fs.Close();
            fs.Dispose();
            if (file.Length == file.OffSet) //如果文件的长度等于文件的偏移量,说明文件已经上传完成
            {
                MessageBox.Show("该文件已存在");
            }
            else
            {
                //while (file.Length != file.OffSet)
                //{
                file.SendByte = new byte[file.Length - file.OffSet <= maxSiz ? file.Length - file.OffSet : maxSiz]; //设置传递的数据的大小
                file = client.UpLoadFileInfo(file, sysConfig); //上传
                //    //int percent = (int)((double)file.OffSet / (double)((long)file.Length)) * 100;
                //    int percent = (int)(((double)file.OffSet / (double)((long)file.Length)) * 100);
                //}
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            
            client.Close();
            client.Abort();
        }
    }

//客户端请求配置ServerClient

public CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo,SysConfig sysconfig)
    {
        return this.Channel.UpLoadFileInfo(fileInfo, sysconfig);
    }

//实现接口 Server

public CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo,SysConfig sysconfig)
    {
        // 获取服务器文件上传路径
        string fileUpLoadPath = System.Web.HttpContext.Current.Server.MapPath(sysconfig.addressFile);
        // 如需指定新的文件夹,需要进行创建操作。
        if (!Directory.Exists(fileUpLoadPath))
        {
            Directory.CreateDirectory(fileUpLoadPath);
        }
        // 创建FileStream对象
        FileStream fs = new FileStream(fileUpLoadPath + fileInfo.Name, FileMode.OpenOrCreate);
        long offSet = fileInfo.OffSet;
        // 使用提供的流创建BinaryWriter对象
        var binaryWriter = new BinaryWriter(fs, Encoding.UTF8);

        binaryWriter.Seek((int)offSet, SeekOrigin.Begin);
        binaryWriter.Write(fileInfo.SendByte);
        fileInfo.OffSet = fs.Length;
        fileInfo.SendByte = null;
        fileInfo.path = fileUpLoadPath ;

        binaryWriter.Close();
        fs.Close();
        return fileInfo;
    }
    public CustomFileInfo GetFileInfo(string fileName)
    {

        string filePath = System.Web.Hosting.HostingEnvironment.MapPath("~/UpLoadFile/") + fileName;
        if (File.Exists(filePath))
        {
            var fs = new FileStream(filePath, FileMode.OpenOrCreate);
            CustomFileInfo fileInfo = new CustomFileInfo
            {
                Name = fileName,
                OffSet = fs.Length,
            };
            fs.Close();
            return fileInfo;
        }
        return null;
    }

  //定有接口 IServer

       [OperationContract]
    CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo, SysConfig sysConfig);
    [OperationContract]
   CustomFileInfo GetFileInfo(string fileName);

  

标签:文件,fs,new,file,服务器,CustomFileInfo,fileInfo,上传
From: https://www.cnblogs.com/MaoZhuaShi/p/18635431

相关文章

  • 博客园markdown及配图自动上传配置
    博客园markdown与配图自动上传配置(mac版m芯片)引言安装配置工具尾注前言目的:因为自己使用markdown写博客,但是在博客园上面发布的时候,发现本地写好的markdown文件,上传到博客园上面,图片需要一张一张重新上传,后面了解到有dotnet-cnblog工具,但是该工具是基于.NETRuntime5.0......
  • Linux的文件锁-flock,控制程序重复执行
    Linux的文件锁-flock,控制程序重复执行在使用crontab管理定时脚本时,如果设定的脚本执行时间间隔较短,例如5分钟执行一次,正常情况下,脚本执行耗时1分钟,在非正常情况下(如服务器压力较大的情况下,或数据量突然增大),脚本执行时间超过5分钟,这时就会造成多个脚本同时执行,严重时甚至拖垮服务......
  • 如何为运行在 PICO 4 Ultra 设备上的项目设置外部文件读写权限?
    PICO4Ultra系列设备使用的安卓操作系统为Android14。当项目的WritePermission为Externa(SDCard)且AndroidAPILevel大于32时,Unity提供的外部文件读取方式在PICO4Ultra设备上将失效。此问题提供两种解决方法,按实际情况选取。解决方法一此方法更加快捷。......
  • 软件缺少msrdc.dll文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 软件缺少msrd3x40.dll文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 软件缺少msrecr40.dll文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 软件缺少MSREPL35.DLL文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • (六).NET6.0通用读取配置文件功能
    1.新增Microsoft.Extensions.Configuration包在启动项目下,设置appsettings.json属性为始终复制2.新建一个文件夹Common,用于存放工具类项目。并且新建项目:Ysq.Core.AppSettings,引用package包项目,然后新建一个读取配置文件的通用类,叫AppHelper。目录结构如图3.AppHelper代码如......
  • 使用docker部署sshd服务器
    dockersshd服务器使用docker运行包含完整sshd服务的Alpine容器,提供ssh、scp、sftp、rsync等服务。初始化脚本创建setup-user.sh,设置用户名密码,内容如下:#设置root密码root_pwd="123456"echo"root:$root_pwd"|chpasswd#设置其他用户username=useruser_pwd="123456"......
  • 生成excel文件(有备注和表头的情况)
    要使用Java导出Excel文件,并且通过@ExcelProperty注解进行列的映射,可以利用EasyExcel库。EasyExcel是阿里巴巴开源的一款高性能Excel读写工具,它支持通过注解将类与Excel的列进行映射,简化了Excel操作的复杂性。前提准备添加EasyExcel依赖到pom.xml文件中:<d......