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# 把本地文件上传到服务器上,和从服务器上下载文件的更多相关文章
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
- springboot项目上传存储图片到七牛云服务器
springboot项目上传存储图片到七牛云服务器 问题描述: 当图片存在本地时会出现卡顿的现象.比如一篇图文混排的文章,如果图片没有加载完,可能整个文章都显示不出来,因为它们都是用的同一个服务器. ...
- HTML5文件上传器,纯脚本无插件的客户端文件上传器---Uploader 文件上传器类
概述 客户端完全基于JavaScript的 浏览器文件上传器,不需要任何浏览器插件,但需要和jQuery框架协同工作,支持超大文件上传,其算法是将一个超大文件切片成N个数据块依次提交给服务 端处理,由 ...
- 大文件传输 分片上传 上传id 分片号 授权给第三方上传
https://www.zhihu.com/question/39593108 作者:ZeroOne链接:https://www.zhihu.com/question/39593108/answer/ ...
- Java Web文件上传原理分析(不借助开源fileupload上传jar包)
Java Web文件上传原理分析(不借助开源fileupload上传jar包) 博客分类: Java Web 最近在面试IBM时,面试官突然问到:如果让你自己实现一个文件上传,你的代码要如何写,不 ...
- 上传base64格式的图片到服务器
上传base64格式的图片到服务器 /**bash64上传图片 * @param $base64 图片的base64数据 * @param $path 保存路径 */ function base64_ ...
- 文件的上传(可以上传照片,word文档,等单个文件)
jsp: jsp页面: <LINK href="${basePath}plugins/uploadify/uploadify.css" type="text/css ...
- PHP系列 | Thinkphp3.2 上传七牛 bad token 问题 [ layui.upload 图片/文件上传]
前端代码 <div class="logo_out" id="upload-logo"></div> JS代码 /** * 上传图片 * ...
- 文件的上传(1)(表单上传和ajax文件异步上传)
文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...
- angular封装七牛云图片上传,解决同一页面多个上传按钮分别上传
step1:引入文件 引入Plupload *该SDK上传功能集于Plupload插件封装,所以需要下载Plupload; plupload.dev.js 引入qiniu.js为了简便,当时直接从官网 ...
随机推荐
- 洛谷 P2879 [USACO07JAN]区间统计Tallest Cow
传送门 题目大意: n头牛,其中最高身高为h,给出r对关系(x,y) 表示x能看到y,当且仅当y>=x并且x和y中间的牛都比 他们矮的时候,求每头牛的最高身高. 题解:贪心+差分 将每头牛一开始 ...
- ES6常用知识总结(20%的知识占80%的份额)
一.变量和常量 var的缺点:(1)var可以多次声明同一个变量: (2)var会造成变量提升 (function rr() { if(true) { var a = 666; } console ...
- AVAWEB学习笔记 ---- 系列文章
[JAVAWEB学习笔记]网上商城实战5:后台的功能模块 [JAVAWEB学习笔记]网上商城实战4:订单模块 [JAVAWEB学习笔记]网上商城实战3:购物模块和订单模块 [JAVAWEB学习笔记]网 ...
- Jave 文件介绍
Java程序的基本组成单元是类,有class声明,类体中包括属性和方法. 一个Java文件中可以有多个class声明,但由public修饰的类只能有一个,并且类名作为该文件的名称. 每一个应用程序都必 ...
- JS比较实用的时间控件
使用方法: 下载下来压缩包,文件的地方不要改变,就可以了 http://www.my97.net/dp/down.asp html的代码: <input readonly="reado ...
- Build Assetbundle出错:An asset is marked as dont save, but is included in the build
前天Build Assetbundle的时候出错了,导致打包失败,具体日志内容如下: An asset is marked as dont save, but is included in the b ...
- 温故而知新(java实现)单例模式的七种写法
第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton ...
- 阻塞IO(blocking IO)
在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据.对于n ...
- Py修行路 python基础 (七)文件操作 笔记(随时更改添加)
文件操作流程: 1.打开文件 open() 2.操作文件 read .writeread(n) n对应读指定个数的 2.x中读取的是字节! 3.x中读取的是字符!read 往外读取文件,是以光标位置开 ...
- Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息
转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...