webapi实现AJAX多文件上传,WebApi实现Ajax模拟Multipart/form-data方式多文件上传

前端页面代码:

上传

$(document).ready(function () {

$("#btnUpload").click(function () {

var formdata = new FormData();

var files = $(".file_control");

$.each(files, function (index, domEle) {

formdata.append("file" + index, domEle.files[0]);

});

$.ajax({

url: '/api/Service/UpLoad',

type: 'POST',

cache: false,

data: formdata,

processData: false,

contentType: false,

success: function (data) {

alert(data.success);

},

error: function () {

alert("error");

}

}).done(function (res) {

}).fail(function (res) {

});

});

后端代码:

///

/// 文件上传

///

///

///

[HttpPost]

[Route("api/Service/UpLoad")]

public Task UpLoad(HttpRequestMessage request)

{

if (!request.Content.IsMimeMultipartContent())

throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);

if (!ModelState.IsValid)

throw new HttpResponseException(HttpStatusCode.BadRequest);

string root = AppDomain.CurrentDomain.BaseDirectory + @"UploadFiles";

if (!Directory.Exists(root))

Directory.CreateDirectory(root);

MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(root);

var task = request.Content.ReadAsMultipartAsync(provider).ContinueWith(t =>

{

if (t.IsFaulted || t.IsCanceled)

return request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);

HttpResponseMessage response = null;

string filePath = root + @"\" + DateTime.Now.ToString("yyyyMMdd");

if (!Directory.Exists(filePath))

Directory.CreateDirectory(filePath);

foreach (var file in provider.FileData)

{

string fileName = file.Headers.ContentDisposition.FileName;

if (Regex.IsMatch(fileName, @"^"".*""$"))

fileName = fileName.Trim('"');

if (Regex.IsMatch(fileName, @"[\\/]+"))

fileName = Path.GetFileName(fileName);

string extName = Path.GetExtension(fileName);

string tempName = DateTime.Now.Ticks.ToString() + extName;

File.Copy(file.LocalFileName, Path.Combine(filePath, tempName));

if (File.Exists(file.LocalFileName))

File.Delete(file.LocalFileName);

// 转存阿里OSS、七牛云、腾讯云COS

response = request.CreateResponse(HttpStatusCode.OK, new { success = true });

}

return response;

});

return task;

}

*注:如果报IsFaulted=true的错误,基本上是因为你没给input起name造成的。

ajax+php (jquery.form插件)实现异步文件上传

upload model

WordPress Contact Form 7插件任意文件上传漏洞

漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...

ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传

最近在做 Android 端文件上传,要求采用 form 表单的方式提交,项目使用的 afinal 框架有文件上传功能,但是始终无法与php写的服务端对接上,无法上传成功.读源码发现:afinal 使 ...

使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传

Anthem.NET刚刚发布了其最新的1.5版本,其中很不错的一个新功能就是对文件上传功能的Ajax实现.本文将简要介绍一下该功能的使用方法. Anthem.NET的下载与安装 Anthem.NET可 ...

jquery ajax file upload NET MVC 无刷新文件上传

网上有各种各样的文件上传方法,有基于JS框架的.也有基于flash swf插件的. 这次分享一个比较简单而且实用能快速上手的文件上传方法,主要步骤: 1.引用Jquery包,我用的是jquery-1. ...

C#模拟请求,模拟登录,Cookie设置、文件上传等问题汇总

由于业务需求,最近需要模拟完成登陆某个网站,并上传所需要的文件.在开发途中,遇到了很多问题,现在,就我遇到的一些问题及解决办法说明如下,希望对遇到同样问题的人有所帮助.因为技术有限,可能有些内容并不完 ...

SpringMVC注解方式与文件上传

目录: springmvc的注解方式 文件上传(上传图片,并显示) 一.注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMap ...

php+form表单的文件上传

...

随机推荐

Day5-python基础之函数(二)

生成器 迭代器 装饰器 模块   来个需求,一个列表中所有元素都+1 1.最容易想到的方法 for循环,找列表索引,对应每个值+1 list_old = [1,2,3,4,5,6,7,8,9] for ...

继续Django

环境准备 1.    创建一个Django后,Django的目录: │ manage.py │ ├─Django_s1 │ settings.py │ urls.py │ wsgi.py │ __in ...

android 列表开发 ListView

1.android 端 二个entity consultInfo: private String name; private String id; consultInfoRef private iLi ...

com.transfer.www

package com.transfer.www; import java.io.IOException; import java.io.PrintWriter; import javax.servl ...

Codeforces Round #204 (Div. 2): B

很简单的一个题: 只需要将他们排一下序,然后判断一下就可以了! 代码: #include #include #define maxn 10 ...

[asp.net mvc 奇淫巧技] 04 - 你真的会用Action的模型绑定吗?

在QQ群或者一些程序的交流平台,经常会有人问:我怎么传一个数组在Action中接收.我传的数组为什么Action的model中接收不到.或者我在ajax的data中设置了一些数组,为什么后台还是接收不 ...

FFPLAY的原理(三)

播放声音 现在我们要来播放声音.SDL也为我们准备了输出声音的方法.函数SDL_OpenAudio()本身就是用来打开声音设备的.它使用一个叫做SDL_AudioSpec结构体作为参数,这个结构体中包 ...

ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性

一.背景描述与课程介绍 明人不说暗话,跟着阿笨一起玩WebApi.在我们平时开发项目中可能会出现下面这些情况; 1).由于用户误操作,多次点击网页表单提交按钮.由于网速等原因造成页面卡顿,用户重复刷新 ...

cordova打包vue2(webpack)android、ios app

使用cordova打包vue2(webpack)app for android ios1.vue项目通过vue-cli脚手架建立项目,使用webpack进行打包,下边是一整套命令. #npm 版本最好 ...

[转]layDate显示默认时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Web端部署百度API物体识别,您需要按照以下步骤操作: 1. 在百度AI开放平台上注册并获取API Key和Secret Key。这些密钥将用于API调用身份验证。 2. 下载并安装Python SDK。您可以在以下链接中找到适用于您的操作系统的SDK:https://ai.baidu.com/sdk#python 3. 在Python中安装百度AI Python SDK。您可以在命令行中使用以下命令安装:pip install baidu-aip 4. 在您的Web应用程序中,导入Python SDK并创建一个AipImageClassify对象。这将允许您调用百度API的物体识别功能。以下是一个示例代码: ```python from aip import AipImageClassify APP_ID = 'your app id' API_KEY = 'your api key' SECRET_KEY = 'your secret key' client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY) ``` 5. 使用AipImageClassify对象调用百度API的物体识别功能。以下是一个示例代码: ```python def recognize_image(image_path): with open(image_path, 'rb') as f: image = f.read() result = client.advancedGeneral(image) if 'result' in result: return result['result'] else: return None ``` 在此示例代码中,我们将图像文件的路径作为参数传递给recognize_image函数。该函数使用AipImageClassify对象调用百度API的advancedGeneral方法,该方法可以识别图像中的多个物体。如果识别成功,则返回一个包含识别结果的字典。否则返回None。 6. 将您的Web应用程序部署到Web服务器上,并确保您已经安装了必要的依赖项和Python SDK。 7. 在您的Web应用程序中添加一个Web页面,使用户可以上传图像文件并调用recognize_image函数。在Web页面中,您可以使用HTML和JavaScript创建一个文件上传表单和一个AJAX请求,以便将图像文件发送到Web服务器并接收识别结果。以下是一个示例代码: ```html <!DOCTYPE html> <html> <head> <title>Object Recognition</title> </head> <body> <form enctype="multipart/form-data" method="POST" action="/recognize"> <input type="file" name="image"> <input type="submit" value="Recognize"> </form> <div id="result"></div> <script src="//code.jquery.com/jquery-3.3.1.min.js"></script> <script> $('form').submit(function(event) { event.preventDefault(); var formData = new FormData(); formData.append('image', $('input[type=file]')[0].files[0]); $.ajax({ url: '/recognize', type: 'POST', data: formData, processData: false, contentType: false, success: function(data) { $('#result').text(JSON.stringify(data)); } }); }); </script> </body> </html> ``` 在此示例代码中,我们创建了一个文件上传表单,并在表单提交时使用AJAX请求将图像文件发送到Web服务器。成功接收识别结果后,我们将其显示在页面上的一个DIV元素中。 8. 在Web服务器上设置路由,以便在收到文件上传请求时调用recognize_image函数并返回识别结果。以下是一个示例代码: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/recognize', methods=['POST']) def recognize(): if 'image' not in request.files: return jsonify({'error': 'No image file uploaded'}) image = request.files['image'].read() result = recognize_image(image) if result is not None: return jsonify({'result': result}) else: return jsonify({'error': 'Failed to recognize image'}) ``` 在此示例代码中,我们使用Flask框架创建了一个Web应用程序,并设置了一个路由,以便在收到文件上传请求时调用recognize_image函数并返回识别结果。如果没有上传图像文件,则返回一个错误消息。如果识别失败,则返回一个错误消息。 以上就是在Web端部署百度API物体识别的步骤。请注意,这只是一个示例代码,您需要根据您的具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值