ashx 上传文件功能 httppostfile 获取不到_Bootstrap Fileinput上传控件示例
示例项目结构 web页面 接口返回的信息
发布日期:2021-06-24 11:40:46
浏览次数:2
分类:技术文章
本文共 3175 字,大约阅读时间需要 10 分钟。
哇,好久没更新知乎的文章了.
上周接了一个上古.NET项目的维护,有需要增加一个功能模块,里面恰好有一个需要上载文件的功能.
于是我使用了Bootstrap FileInput,这是一款风格合我眼光的上传控件,但是要适配c#的话,在国内的论坛翻了很多遍,也没有 一个讲的清楚的,弄好项目只好琢磨一下.于是自己来写一个完整示例版本吧.
1.首先我们看一下项目的结构;
其中Modules下放得html,scripts下存放的就是需要用到的js.
dataservice.ashx则是一个简易的后台.
其他文件都是项目生成的,我们先不管.
2.开始讲一下fileinput的使用方法,贴一下Html文件
FileInput上传用例
需要看的就是下面这一行.标准的fileinput标签.
在添加的fileinput.js中开始初始化id="inputfile"这个标签. 在js种写法如下:
$(function () { Init();});function Init() { fileInit();}function fileInit() { $("#inputfile").fileinput({ language: "zh", uploadUrl: "../dataservice.ashx", //点击上传请求的后台地址 allowedFileExtensions: ['xls', 'xlsx', 'docx'], //允许上传的文件格式 initialPreviewCount: 5, initialPreview: [], initialPreviewAsData: true, initialPreviewConfig: [], maxFileCount: 5, deleteUrl: "/site/file-delete", //删除操作的URL地址 overwriteInitial: true, //不允许覆盖初始的预览,所以添加文件时不会覆盖 maxFileSize: 10000, //文件最大不超过100KB initialCaption: "" //默认名称 }).on("fileuploaded", function (event, data, previewId, index) { //回调函数逻辑 });}//邮箱:songkang@bingosoft.net//作者:宋康
如此这般就可以在前端页面上看到我们的这个上传模块了,如下图:
之前在fileinput.js的初始化函数中定义了上传调用的url,即:
uploadUrl: "../dataservice.ashx", //点击上传请求的后台地址
这代表调用上一级目录下的dataservice.ashx.我们看一下dataservice.ashx中的内容:
using System.Web;using Newtonsoft.Json;using Newtonsoft.Json.Linq;namespace fileinput{ ////// dataservice 的摘要说明 /// public class dataservice : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.Write(ImportFile()); //返回结果 } public bool IsReusable { get { return false; } } public JObject ImportFile() { var oStream = HttpContext.Current.Request.Files; //拿到上传的文件流 string jsonText = "{data:["; for (int i = 0; i < oStream.Count; i++) { HttpPostedFile PostedFile = oStream[i]; if (PostedFile.ContentLength > 0) { string FileName = PostedFile.FileName; string strPath = "H:" + "testImport"; //上载路径 PostedFile.SaveAs(strPath + FileName); jsonText += "{"caption":"" + FileName + "","size":"" + PostedFile.ContentLength + "","width":"120px","key":"" + i + 1 + ""},"; } } jsonText += "]}"; //拼接最后要接收的json字符串 JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText); return jo; } }}
这样我们就可以轻松的上载文件到服务器的指定路径啦,看一下我们接口返回的数据.
{ "data": [ { "caption": "20190304-子系统数据统计表文档统-v4.xlsx", "size": "12868", "width": "120px", "key": "01" } ]}
我把项目文件打包放到了我的云服务器上,给出一个下载地址:
http://47.107.224.128:8080/bear/downfile/fileinput.zip47.107.224.128:8080有疑问的可以发邮件或者私信.
转载地址:https://blog.csdn.net/weixin_32553639/article/details/113045306 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年03月31日 13时09分46秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JQuery(3)--冒泡效果
2019-04-27
异常(2)-- UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/项目包名
2019-04-27
Android软键盘(1)---输入法界面管理(打开/关闭/状态获取)
2019-04-27
Android动态设置view的高度宽度
2019-04-27
vue 事件总线EventBus的概念、使用以及注意点
2019-04-27
JavaScript 用七种方式教你判断一个变量是否为数组类型
2019-04-27
黄家懿:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2019-04-27
如何利用pyecharts绘制酷炫的桑基图?
2019-04-27
王朝阳:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2019-04-27
Scratch等级考试(二级)模拟题
2019-04-27
如何在Jupyter Lab中显示pyecharts的图形?
2019-04-27
什么是Python之禅?
2019-04-27
【青少年编程】【Scratch】01 运动模块
2019-04-27
json的序列化与反序列化
2019-04-27
【第16周复盘】学习的飞轮
2019-04-27
如何利用pyecharts绘制炫酷的关系网络图?
2019-04-27
NCEPU:线下组队学习周报(007)
2019-04-27
LeetCode-LCP 18. 早餐组合(Goland实现)
2019-04-27
C++从入门到进阶近100本书推荐电子书pdf
2019-04-28