webapi实现AJAX多文件上传,AJAX调用webapi上传图片或文件

AJAX调用webapi上传图片或文件,并返回刚上传的文件名。废话不多说直接贴代码吧

html相关:html>

Title

function doUpload() {

var formData = new FormData($("#uploadForm")[0]);

$.ajax({

url: '/api/upload',

type: 'post',

data: formData,

async: false,

cache: false,

contentType: false,

processData: false,

success: function (returndata) {

alert(returndata);

},

error: function (returndata) {

alert("报错了");

console.log(returndata);

}

});

}

无刷新测试: 

上传文件: 

webapi相关:public async Task Post()

{

if (!Request.Content.IsMimeMultipartContent())

{

throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);

}

string uploadFolderPath = HostingEnvironment.MapPath("~/Upload");

//如果路径不存在,创建路径

if (!Directory.Exists(uploadFolderPath))

Directory.CreateDirectory(uploadFolderPath);

string guid = Guid.NewGuid().ToString().Replace("-","");

List files = new List();

var provider = new WithExtensionMultipartFormDataStreamProvider(uploadFolderPath, guid);

try

{

// Read the form data.

await Request.Content.ReadAsMultipartAsync(provider);

// This illustrates how to get the file names.

foreach (var file in provider.FileData)

{//接收文件

files.Add(Path.GetFileName(file.LocalFileName));

}

}

catch

{

throw;

}

return string.Join(",", files);

}

其中的WithExtensionMultipartFormDataStreamProvider类:public class WithExtensionMultipartFormDataStreamProvider : MultipartFormDataStreamProvider

{

public string guid { get; set; }

public WithExtensionMultipartFormDataStreamProvider(string rootPath, string guidStr)

: base(rootPath)

{

guid = guidStr;

}

public override string GetLocalFileName(System.Net.Http.Headers.HttpContentHeaders headers)

{

string extension = !string.IsNullOrWhiteSpace(headers.ContentDisposition.FileName) ? Path.GetExtension(GetValidFileName(headers.ContentDisposition.FileName)) : "";

return guid + extension;

}

private string GetValidFileName(string filePath)

{

char[] invalids = System.IO.Path.GetInvalidFileNameChars();

return String.Join("_", filePath.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd('.');

}

}

效果如下:

1a10bca352cdcd14e367ab58459a470a.png

44afdc9da090a90c200beba5212c3fb0.png

图片与文件被成功上传了:

eb69bbeba547c7db8916df1816010794.png

欢迎加群讨论技术,群号:677373950

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值