文件上传去除"Content-Disposition: form-data"
某个项目中为了统一处理文件上传业务,创建了一个FileUpload Handle,由于上传客户端用到各种技术,当时为了方便断点续传,就直接接收请求中的文件内容(可能是分片),所以处理的不是规范的http请求,一直工作的很好,但是现在使用html代码上传文件时遇到了问题:
服务接收到的文件中会多一个头和尾,原始内容如:
Part,Product
,
,
服务端接收到的如:
-----------------------------7e0bc1790bd2
Content-Disposition: form-data; name="picture"; filename="C:\Users\ns56\Desktop\key_no.csv"
Content-Type: application/vnd.ms-excel Part,Product
,
,
-----------------------------7e0bc1790bd2--
由此可见html上传的是标准http请求,附带了文件信息,那么现在要做的就是去掉"Content-Disposition: form-data"
经过分析只能使用Ajax来发送请求:
<script>
function doUpload() {
$.ajax({
url: 'http://',
type: 'POST',
data: document.getElementById('file1').files[],
async: false,
cache: false,
contentType: 'application/x-www-form-urlencoded',
processData: false,
success: function (returndata) {
alert(returndata);
},
error: function (returndata) {
alert(returndata);
}
});
}
</script>
界面元素如下:
<form id="uploadForm">
<p>
Pictures:
<input type="file" name="picture" id="file1" />
</p>
</form>
<input type="button" value="上传" onclick="doUpload()" />
另附Angular文件上传代码:
<div ng-app="DemoApp" ng-controller="DemoController">
<span class="input-group-addon">File Path:</span>
<input type="file" id="file1" name="file1" neg-file-input ngf-select ng-model="file1" accept=".*" />
<button type="button" ng-click="Upload()">Upload</button>
</div>
JS部分:
var app = angular.module('DemoApp', []);
app.controller('DemoController', ['$scope', '$http', function ($scope, $http) {
//为按钮定义函数
$scope.Upload = function () {
var file = document.getElementById("file1").files[];
$scope.UploadHeader = {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}
$http.post("up.ashx", file, $scope.UploadHeader)
.success(function (returndata) {
alert(returndata);
})
.error(function () {
alert(returndata);
});
}
}]);
Handle部分:
public void ProcessRequest(HttpContext context)
{
using (var inputStream = context.Request.InputStream)
{
string path = HttpContext.Current.Server.MapPath("UP");
using (var flieStream = new FileStream(path + "/1.txt", FileMode.Create))
{
inputStream.CopyTo(flieStream);
}
}
context.Response.Write("ok");
}
文件上传去除"Content-Disposition: form-data"的更多相关文章
- .net core 3.0web_razor page项目_使用中间件接受大文件上传报错_httpRequest.Form threw an exception of type Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException_Request body too large
前言:在web项目的.net framework时文件上传时,自己常用一般处理程序接受上传文件,上传文件的大小限制是可以项目的webconfig里配置. 到core项目使用一般处理程序变成了中间件 ...
- vuetify | vue | 文件上传组件 | file | upload | form input[type="file"]
今天无聊地写vuecli3听歌的时候,遇到了上传文件到Django的自我需求,然后就到vuetify的表单组件里找upload btn,发现居然没有!!! 顿时惊了个呆,要知道之前用element做操 ...
- ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传
最近在做 Android 端文件上传,要求采用 form 表单的方式提交,项目使用的 afinal 框架有文件上传功能,但是始终无法与php写的服务端对接上,无法上传成功.读源码发现:afinal 使 ...
- js 使用jquery.form.js文件上传
1.文件上传,使用jquery.form.js插件库 <!DOCTYPE html> <html> <head> <meta charset="UT ...
- form表单系列中文件上传及预览
文件上传及预览 Form提交 Ajax 上传文件 时机: 如果发送的[文件]:->iframe, jQurey(),伪Ajax 预览 import os img_path = os.path.j ...
- Spring MVC 文件上传简单示例(form、ajax方式 )
1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...
- .NET Core 如何上传文件及处理大文件上传
当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MVC的Controller中的A ...
- ASP.NET Core MVC如何上传文件及处理大文件上传
用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发AS ...
- 【ASP.NET Web API教程】5.3 发送HTML表单数据:文件上传与多部分MIME
原文:[ASP.NET Web API教程]5.3 发送HTML表单数据:文件上传与多部分MIME 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面 ...
随机推荐
- excel VLOOKUP函数的使用方法 .
VLOOKUP函数是Excel中几个最重函数之一,为了方便大家学习,兰色幻想特针对VLOOKUP函数的使用和扩展应用,进行一次全面综合的说明.本文为入门部分 一.入门级 VLOOKUP是一个查找函数, ...
- Google测试分享-测试经理
首先大家可以思考下,google的测试经理角色必须具备什么样的能力.据不完全统计,google的测试经理,超过一半之前都做过TE的角色(大家可以想想为啥):对于与被测产品相关的任何使用问题,测试经理都 ...
- get,post 区别,HTTP通信
GET & POST GET 1.GET 的本质是"得" 2.从服务器拿数据,效率更高 3.从数学的角度来讲,GET 的结果是"幂等" ...
- SQLSERVER远程备份、恢复(转)
SQLSERVER服务实例名称:192.168.0.2需要备份的数据库名称: a备份机器名称(Client端):192.168.0.3备份机用户:zf 密码:123备份机域名:domain备份机提供备 ...
- C# 窗体位置 Show和ShowDialog(转)
CenterParent 窗体在其父窗体中居中. CenterScreen 窗体在当前显示窗口中居中,其尺寸在窗体大小中指定. Manual 窗体的位置由 Location 属性确定. Windows ...
- C# 非模式窗体show()和模式窗体showdialog()的区别(转)
对话框不是模式就是无模式的.模式对话框,在可以继续操作应用程序的其他部分之前,必须被关闭(隐藏或卸载).例如,如果一个对话框,在可以切换到其它窗 体或对话框之前要求先单击“确定”或“取消”,则它就是模 ...
- arrays.xml文件中添加drawable数组的问题
一.问题描述 今天遇到一个需求,将java中的数组搬进arrays.xml文件中 R.drawable.menu_share_pic_item, R.drawable.menu_share_wecha ...
- [LintCode] Add Binary 二进制数相加
Given two binary strings, return their sum (also a binary string). Have you met this question in a r ...
- ado.net 实体类_数据访问类
实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- WebApp 里Meta标签大全,webappmeta标签大全
1.先说说mate标签里的viewport: viewport即可视区域,对于桌面浏览器而言,viewport指的就是除去所有工具栏.状态栏.滚动条等等之后用于看网页的区域.对于传统WEB页面来说,9 ...