方法一、通过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和input file上传
 

<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#上传下载文件的更多相关文章

  1. rz和sz上传下载文件工具lrzsz

    ######################### rz和sz上传下载文件工具lrzsz ####################################################### ...

  2. linux上很方便的上传下载文件工具rz和sz

    linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...

  3. shell通过ftp实现上传/下载文件

    直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...

  4. SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例

    本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...

  5. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  6. C#实现http协议支持上传下载文件的GET、POST请求

    C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...

  7. HttpClient上传下载文件

    HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...

  8. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...

  9. 如何利用京东云的对象存储(OSS)上传下载文件

    作者:刘冀 在公有云厂商里都有对象存储,京东云也不例外,而且也兼容S3的标准因此可以利用相关的工具去上传下载文件,本文主要记录一下利用CloudBerry Explorer for Amazon S3 ...

  10. SFTP上传下载文件、文件夹常用操作

    SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd  d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...

随机推荐

  1. lamp和xampp和lampp的区别

    lamp:我们最常说的lamp,是一种系统环境,由Linux+Apache+Mysql+PHP构成,常用来运行web服务器.要在系统上完成这个环境的安装,可以很复杂的一步一步编译和设置,也可以用已经集 ...

  2. Docker下搭建mongodb副本集

    背景 有需求需要对mongodb做一个容灾备份.根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾.副本集的优势在于:"有自动故障转移和恢复特性,其任意节点 ...

  3. Turn.js 实现翻书效果(自适应单双页)

    来源:https://www.cnblogs.com/hellman/p/10683492.html在上面的来源基础上增加页码显示,自适应单双页PC端效果: 移动端展示: 源码下载地址:http:// ...

  4. mysql 库表的操作

    MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...

  5. python 手机App数据抓取实战二抖音用户的抓取

    前言 什么?你问我国庆七天假期干了什么?说出来你可能不信,我爬取了cxk坤坤的抖音粉丝数据,我也不知道我为什么这么无聊. 本文主要记录如何使用appium自动化工具实现抖音App模拟滑动,然后分析数据 ...

  6. mac OS 安装qt环境

    先安装xcode,然后从官网下载dmg安装包安装即可,这里主要出现一个问题就是创建的工程没法编译,提示没有构建包(kit) 要安装command line tool才行. 在命令行中输入: xcode ...

  7. 最全APP安装/卸载/更新测试点

    1.安装查看在安装过程中存在的提示信息是否明确,意思是否明确在安装过程中,点击取消按钮,能否正常退出安装程序,软件是否可用.安装时是否识别有SD卡,并默认安装到sd卡中安装过程中,接听电话或者短信,安 ...

  8. (六)Redis之数据结构之Set

    一.常用方法 和List类型不同的是,Set集合中不允许出现重复的元素 添加/删除元素 获取集合中的元素 集合中的差集运算 集合中的交集运算 集合中的并集元算 扩展命令 1和2 添加/删除元素和获取集 ...

  9. 菜鸡之NetCore 使用EF操作数据库 Oracle & Sqlserver (一)

    摘要: 该篇文章主要记录netCore EFCore 如何操作Oracle和SqlServer 数据库,采用Codefirst方式创建数据库以及表. 一, 项目建立 项目采用DDD领域驱动设计模式[学 ...

  10. cli中webpack的配置详解

    一.前言 vue-cli是构建vue单页应用的脚手架,输入一串指定的命令行从而自动生成vue.js+wepack的项目模板.这其中webpack发挥了很大的作用,它使得我们的代码模块化,引入一些插件帮 ...