• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

前端/C#|前后台交互文件上传、下载

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

试了很多方式,最终确认这个全面简单版的。废话不多说,贴码。

input的type命名为file,即可实现文件上传。嗯~~~现在html还是很强大的。Good!

前端

单个文件上传

Html:

<form id="form1">
  <input type="file" name="files" /> 
  <input type="button" value="单文件上传" onclick="uploadFile()"/>
</form>

Jquery:

在此基础上,需要引用两个js文件:

<script src="~/Scripts/jquery-1.8.2.min.js"></script>

<script src="~/Scripts/jquery.form.js"></script>

function uploadFile() {
$("#form1").ajaxSubmit({
url: "@Url.Action("UploadFile", "Home")",  //这里也可以写成:"/Home/UploadFile",其中Home是Controller的名字;UploadFile是方法名字
type: "post",
success: function (data) {
if (data == "True" || data == true) {
}
else {
}
},
error: function (aa) {
}
});
}

多文件上传

Html:

<form enctype="multipart/form-data" id="form_example">
  <input type="file" id="files" multiple onchange="addFile()"/><br /><br />
  <input type="button" value="提交" id="submit" onclick="submitFile()" />
</form>
<div id='file-list-display'></div>

JS:

var fileList = [];

function addFile() {
var files = document.getElementById("files"),
fileListDisplay = document.getElementById('file-list-display');
for (var i = 0; i < files.files.length; i++) {
fileList.push(files.files[i]);
}

 

fileListDisplay.html = '';
fileList.forEach(function (file, index) {
var fileDisplayEl = document.createElement("p");
fileDisplayEl.innerHTML = (index + 1) + ":" + file.name;
fileListDisplay.appendChild(fileDisplayEl);
})
}

function submitFile() {
var formData = new FormData();
//循环添加到formData中
fileList.forEach(function (file) {
formData.append('files', file, file.name);
})

$.ajax({
url: "/Home/UploadFile",
type: 'POST',
data: formData,
// 告诉jQuery不要去处理发送的数据
processData: false,
// 告诉jQuery不要去设置Content-Type请求头
contentType: false,
async: false,
success: function (data) {
if (data) {
}
}
});
}

后台(C#)

/// <summary>
        /// 文件上传到本地
        /// </summary>
        public void Upload()
        {
            try
            {
                HttpFileCollection hpFiles = HttpContext.Current.Request.Files;
                for (int i = 0; i < hpFiles.Count; i++)
                {

                    if (hpFiles[i] == null || hpFiles[i].FileName.Trim() == "")
                    {
                        _Error = 1;
                        return;
                    }
                    string Ext = GetExt(hpFiles[i].FileName);
                    //if (!IsUpload(Ext))
                    //{
                    //    _Error = 2;
                    //    return;
                    //}
                    int iLen = hpFiles[i].ContentLength;
                    if (iLen > _MaxSize)
                    {
                        _Error = 3;
                        return;
                    }

                    if (!Directory.Exists(_SavePath)) Directory.CreateDirectory(_SavePath);
                    byte[] bData = new byte[iLen];
                    hpFiles[i].InputStream.Read(bData, 0, iLen);
                    string FName;
                    if (_IsChangeName)
                    {
                        FName = NewFileName(Ext);
                    }
                    else
                    {
                        FName = hpFiles[i].FileName;
                    }
                    FileStream newFile = new FileStream(_SavePath + FName, FileMode.OpenOrCreate);
                    newFile.Write(bData, 0, bData.Length);
                    newFile.Flush();
                    int _FileSizeTemp = hpFiles[i].ContentLength;

                    string ImageFilePath = _SavePath + FName;

                    newFile.Close();
                    newFile.Dispose();
                    _FileName = hpFiles[i].FileName;
                    _OutFileName = FName;
                    _FileSize = _FileSizeTemp;
                }
                _Error = 0;
                return;
            }
            catch (Exception ex)
            {
                _Error = 4;
                return;
            }
        }

源码下载:https://files.cnblogs.com/files/pukua/UploadDemo.zip


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#winformsqlite数据库文件备份和恢复发布时间:2022-07-13
下一篇:
C#堆栈和堆的讲解发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap