向上传文件服务器,向服务器上传文件

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

//浏览选择需要上传的文件

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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知道python测试答案_大数据分析的python基础知道章节测试答案

大数据分析的python基础知道章节测试答案更多相关问题下列是内流湖的是[ ]A、青海湖      B、洪泽湖 C、洞庭湖       D、西湖下列河流冬季有结冰现象的是[ ]A、松花江 B、黄河 C、珠江 D、长江我国最大湖是________湖&#xff0c;它属于________湖&#xff0c;我国最…

vcenter服务器修改ip,vcenter服务器默认ip地址

vcenter服务器默认ip地址 内容精选换一换安全组类似防火墙功能&#xff0c;是一个逻辑上的分组&#xff0c;用于设置网络访问控制。用户可以在安全组中定义各种访问规则&#xff0c;当弹性云服务器加入该安全组后&#xff0c;即受到这些访问规则的保护。入方向&#xff1a;入方…

儿童吹泡泡水简单配方_儿童吹泡泡玩具水怎么制作

玩具是每个孩子成长所必须&#xff0c;给宝宝选择玩具的方法也不是那么简单的。给宝宝做玩具就更加不简单了&#xff0c;需要学习相关的教程才可以。那么&#xff0c;儿童吹泡泡玩具水怎么制作呢?跟着小编一起来看看关于儿童吹泡泡玩具的那些事吧!儿童吹泡泡玩具水怎么制作1、…

cuisineroyale服务器所在位置,cuisine royale进不去怎么办?原因及解决办法分享

cuisine royale是最近非常好玩的诙谐版吃鸡游戏&#xff0c;cuisine royale进不去应该怎么办呢&#xff1f;下面小编就来为大家详细的介绍一下cuisine royale进不去的原因及解决办法&#xff0c;感兴趣的玩家快来看看吧&#xff01;cuisine royale玩不了怎么办&#xff1f;游戏…

双表查询java代码_多表增删改查

[java]代码库package com.ww.service;import java.lang.reflect.Array;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import com.mysql.jdbc.PreparedStatement;import com.ww.db.DBHelper;import com.ww.e…

服务器项目前端调用摄像头失败,浏览器调用摄像头失败:NotSupportedError Only secure origins are allowed...

通过浏览器调用摄像头失败&#xff1a;NotSupportedError Only secure origins are allowed错误报告NotSupportedError Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).[Deprecation] getUserMedia() no longer works on insecure origins. To use this featur…

greenplum 存储过程_揭秘!Greenplum并行执行引擎到底是如何工作的?

《深入浅出Greenplum内核》系列直播以每月一场的速度持续推出中。在第一场《架构解读》直播里&#xff0c;我们了解了Greenplum的整体架构、存储管理、索引、查询执行、事务与日志等内容。今天(5月22日)&#xff0c;第二场《Greenplum内核揭秘之执行引擎》也顺利播出啦&#xf…

倩女幽魂服务器维护时间,9月5日在线维护公告

亲爱的玩家&#xff1a;《倩女幽魂》手游将于本周四上午进行在线更新&#xff0c;更新期间无需停服&#xff0c;玩家可照常进行游戏。欢迎您届时体验本周放出的全新内容&#xff0c;祝全体玩家游戏愉快&#xff01;本周四在线更新内容如下&#xff1a;系统1.跨服队伍和团队功能…

区块链是什么通俗解释_区块链是什么?如何用一句话通俗解释区块链

站长之家(Chinaz.com)注&#xff1a;很多人可能跟小编一样&#xff0c;为了搞懂区块链的概念&#xff0c;看了无数篇文章&#xff0c;但是很多说的都是大概念。虽然每个字都看得懂&#xff0c;但是连在一起就看不懂了。那么&#xff0c;区块链到底是什么东西呢?如何用一句话通…

和push的区别_还没有理解let 和 const的用法和区别吗,几百字让你立马搞懂

本文主要讲解ES6中变量的相关操作&#xff0c;变量的命名&#xff0c; 讲解 var、 let 、 const 三者的区别正文ES6中的 let 和 const 都是用来声明变量的&#xff0c; 他们与 var 有所区别let 命令我们都知道在for循环中&#xff0c;我们命名的变量 i 一般都只是为了在这个循环…

深度学习分类类别不平衡_「图像分类」 关于图像分类中类别不平衡那些事

作者&编辑 | 郭冰洋1 简介小伙伴们在利用公共数据集动手搭建图像分类模型时&#xff0c;有没有注意到这样一个问题呢——每个数据集不同类别的样本数目几乎都是一样的。这是因为不同类别的样例数目差异较小&#xff0c;对分类器的性能影响不大&#xff0c;可以在避免其他因…

vue设置多选框默认勾选_Vue实现全选和反选即Vue复选框增加全选功能

导语:Vue中单选下拉框开发起来非常简单,直接select包裹一个带v-for的option即可但是当我们想做个带多选的下拉框该怎么办呢?最简方法是什么?比如下面这个图:如果网上搜的话,搜的是一堆带children的 ,那种是遍历tree的思想,和多选下拉框不是一回事,而且写起来复杂看不懂源码再…

pyqt5 下拉 多页 点击_PyQt5实战——自定义翻页控件实现

分页控件效果图一、环境要求python解释器&#xff1a;python3.7.4依赖&#xff1a;PyQt5、sys模块二、思路分析1、布局&#xff1a;”上一页“、”下一页“等button、edit及label控件采用水平布局&#xff0c;使用该布局填充主控件QWidget2、类继承关系&#xff1a;主界面继承自…

三种平摊分析的方法分别为_干货|电工必须学会的三极管电路分析方法

三极管有静态和动态两种工作状态。未加信号时三极管的直流工作状态称为静态&#xff0c;此时各极电流称为静态电流&#xff0c;给三极管加入交流信号之后的工作电流称为动态工作电流&#xff0c;这时三极管是交流工作状态&#xff0c;即动态。一个完整的三极管电路分析有四步&a…

休眠后gpio状态_浅谈Digi XBee模块的休眠模式

浅谈Digi XBee模块的休眠模式2020-3-25Digi XBee S2C模块&#xff0c;如果仅连接电源线可以测得&#xff0c;在待机情况下&#xff0c;大约是10.5mA左右的电流&#xff0c;在休眠时的功耗可以低到0.5uA。可以知道&#xff0c;休眠几乎不耗电。在Spec上标的待机功耗会比实测只接…

xodo上的笔记不见了_一起来“终极笔记名场面批发市场”进货吗

俗话说得好&#xff0c;谁都逃不过“真香定律”&#xff0c;三天不见小笔记&#xff0c;想他。不对&#xff0c;不应该叫小笔记&#xff0c;应该叫粉丝起的名字——“【瓶邪黑花】《终极笔记》(原著风/连载)”下面请接受来自粉丝的疯狂打call~自上周《终极笔记》播出&#xff0…

python3学习笔记 雨痕_Python 3 学习笔记:数字和布尔

数字基本类型整数在 Python 编程中&#xff0c;整数就是数学意义上的整数&#xff0c;包括正整数、负整数和零&#xff0c;且它的位数是任意的。根据表示方法的不同&#xff0c;可以分为&#xff1a;二进制整数八进制整数十进制整数十六进制整数浮点数浮点数&#xff0c;即数学…

不越狱换壁纸_那些不舍得换的手机插画壁纸,你还差几张?

酷爱收藏美作的微课菌可以大展拳脚了&#xff01;分享3位自己收藏的画师作品&#xff0c;绝对每一张都让你舍不得换&#xff0c;手机可以扔&#xff0c;壁纸得先拷贝存起来&#xff01;开始吧&#xff01;&#xff01;多图预警&#xff01;NO.1&#xff1a;Atey Ghailan&#x…

程序员绩效总结_年终总结怎么写?

每年这时候&#xff0c;都有必要写一下一年的个人工作总结。年终总结或工作总结是个挺重要的事。写好的话&#xff0c;有助于说明自己的工作绩效&#xff0c;绩效好可以多拿年终奖&#xff0c;还有机会争取晋升。另外&#xff0c;一年下来的个人生活也需要总结&#xff0c;这一…

线程停止继续_线程不是你想中断就能中断

这是我2021年的第2篇原创文章&#xff0c;原汁原味的技术之路尽在Jerrycodes为什么不强制停止如何用 interrupt 停止线程sleep 期间能否感受到中断停止线程的方式有几种总结启动线程需要调用 Thread 类的 start() 方法&#xff0c;并在 run() 方法中定义需要执行的任务。启动一…