C#上传下载文件
方法一、通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
<div >
<input type="file" name="FileUpload" id="FileUpload"><a class="layui-btn layui-btn-mini" id="btn_uploadimg">上传图片</a></div><script type="text/jscript">
$(function () { $("#btn_uploadimg").click(function () { var fileObj = document.getElementById("FileUpload").files[0]; // js 获取文件对象,(据说IE8 不支持.files写法,未测试) if (typeof (fileObj) == "undefined" || fileObj.size <= 0) { alert("请选择图片"); return; } var formFile = new FormData(); formFile.append("action", "UploadVMKImagePath"); formFile.append("file", fileObj); //加入文件对象 //第一种 XMLHttpRequest 对象 //var xhr = new XMLHttpRequest(); //xhr.open("post", "/Admin/Ajax/VMKHandler.ashx", true); //xhr.onload = function () { // alert("上传完成!"); //}; //xhr.send(formFile); //第二种 ajax 提交 var data = formFile; $.ajax({ url: "/Admin/Ajax/VMKHandler.ashx", data: data, type: "Post", dataType: "json", cache: false,//上传文件无需缓存 processData: false,//用于对data参数进行序列化处理 这里必须false contentType: false, //必须 success: function (result) { alert("上传完成!"); }, }) }) }) </script><form id="fmFileUpload_Knowledge" method="post" enctype="multipart/form-data">
//必须要有name属性,name属性是用于在前台和后台间建立联系的,form中只有具有name属性的控件,其值才会被传递到后台,而没有name属性的控件后台程序是接收不到它的值的
<input id="UploadFile" type="file" name="name1" /></div>
</form>
<script type="text/jscript">
$(function () { $("#btn_uploadimg").click(function () {var options = { type: 'post', data: { Default: "FileUpload",}, url: 'Index.aspx', success: function (data) {
//兼容IE和FireFox var file = $("#UploadFile"); file.after(file.clone().val("")); file.remove();
} }; $('#fmFileUpload_Knowledge').ajaxSubmit(options);
}) }) </script>private string FileUpload() { string fileName = string.Empty; string serverPath = string.Empty; try { HttpFileCollection httpFileCollection = Request.Files; if (httpFileCollection.Count > 0) //如果没有name属性,获取不到file { HttpPostedFile file = httpFileCollection[0];
fileName = Path.GetFileName(file.FileName);
if (File.Exists(serverPath)) { rdsl.returnMessage = "该文件已存在,请更改文件名或者删除原文件,然后上传."; return GetJSON.JSONSerialize(rdsl); }
Thread thread = new Thread(new ThreadStart(() => { file.SaveAs(serverPath); } )); thread.Start();
} else { rdsl.returnCode = iCode.ToString(); rdsl.returnMessage = "未获取到文件.";
} return GetJSON.JSONSerialize(rdsl);
} catch (Exception ex) { log.Error(ex.Message); log.Error(ex.StackTrace);
}
}
/// <summary> /// 下载文件方法 /// </summary> /// <param name="serverPath">被下载的文件地址(服务器地址包括文件)</param> /// <param name="filePath">另存放的路径(本地需要存储文件的文件夹地址)</param> public void Download(string serverPath, string filePath) { WebClient client = new WebClient(); string fileName = serverPath.Substring(serverPath.LastIndexOf("/") + 1); ;//被下载的文件名 string path = filePath + fileName;//另存为地址 try { WebRequest myre = WebRequest.Create(serverPath); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } try { client.DownloadFile(serverPath, fileName); FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); byte[] mbyte = r.ReadBytes((int)fs.Length); FileStream fstr = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write); fstr.Write(mbyte, 0, (int)fs.Length); fstr.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } }
C#上传下载文件的更多相关文章
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- shell通过ftp实现上传/下载文件
直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...
- SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...
- linux下常用FTP命令 上传下载文件【转】
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...
- C#实现http协议支持上传下载文件的GET、POST请求
C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...
- HttpClient上传下载文件
HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...
- 初级版python登录验证,上传下载文件加MD5文件校验
服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...
- 如何利用京东云的对象存储(OSS)上传下载文件
作者:刘冀 在公有云厂商里都有对象存储,京东云也不例外,而且也兼容S3的标准因此可以利用相关的工具去上传下载文件,本文主要记录一下利用CloudBerry Explorer for Amazon S3 ...
- SFTP上传下载文件、文件夹常用操作
SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...
随机推荐
- Centos7.0配置Hadoop2.7.0伪分布式
一.ssh免密登录 1.命令ssh-keygen. overwrite输入y一路回车 2.将生成的密钥发送到本机 ssh-copy-id localhost中间会询问是否继续输入“yes” 3.测试免 ...
- AtCoder整理(持续更新中……)
做了那么久的atcoder觉得自己的题解发的很乱 给有想和我一起交流atcoder题目(或者指出我做法的很菜)(或者指责我为什么整场比赛只会抄题解)的同学一个索引的机会??? 于是写了个爬虫爬了下 A ...
- 90%程序员都没有完全答对Cookie和Session的区别
我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等. ...
- Python中的Nonetype类型判断
在学习过程中遇到了程序崩溃,反馈的原因是变量的类型是 Nonetype 那么如何判断该类型 if Lines is None: print(type(Lines)) 其实 Nonetype 就是No ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的htmlreport模块
生成htmlreport的模块是我在网上随意找的一个版本,主要生成的report包括接口名称,接口url,请求数据,响应数据,断言词,断言结果等 具体的htmlreport代码如下: # -*- en ...
- Gossip协议
Gossip数据传播协议: Fabric通过将工作负载划分到事务执行(背书和提交)对等节点和事务排序节点,优化了区块链网络性能.安全性和可伸缩性.这种网络操作的解耦需要一个安全.可靠和可伸缩的数据传播 ...
- Vue解决项目白屏
第一步: vue-cli项目根目录下面新建Vue.config.js文件 proxy反向代理 module.exports = { devServer: { proxy: { ...
- 关于财务YT知识点
1 YT 将今年剩余的未花完的money做YT,生成一个YT号,用在下一年使用的机制. 2 生成YT的方式 2.1 PR生成YT 2.2 PO生成YT 2.3 TR生成YT 2.4 预算直接生成YT ...
- 普通表分区改造_rename方式
一.需求 配合开发人员,对业务临时表进行分区改造(业务认为的临时表,只需要保留近一月数据,并非oracle临时表类型) 二.如下记录完整过程 开发需求 TS_PM 以time_key分区 .沟通明确方 ...
- (二)第一个mybatis项目
1. 引包 本例中使用maven构造项目,所以只需配置依赖即可引相应的包. pom.xml <project xmlns="http://maven.apache.org/POM/4. ...