我正在使用asp.net mvc 4 webapi beta来构建休息服务.我需要能够从客户端应用程序接受POSTed图像/文件.这可能使用webapi吗?以下是我目前使用的操作方式.有谁知道这应该如何工作的一个例子?
[HttpPost]
public string ProfileImagePost(HttpPostedFile profileImage)
{
string[] extensions = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" };
if (!extensions.Any(x => x.Equals(Path.GetExtension(profileImage.FileName.ToLower()), StringComparison.OrdinalIgnoreCase)))
{
throw new HttpResponseException("Invalid file type.", HttpStatusCode.BadRequest);
}
// Other code goes here
return "/path/to/image.png";
}
Run Code Online (Sandbox Code Playgroud) 我正在运行一个导入,每次运行将有1000个记录.只是在我的假设上寻找一些确认:
以下哪一项最有意义:
SaveChanges()每个AddToClassName()电话.SaveChanges()每n次AddToClassName()呼叫运行一次.SaveChanges()后,所有的的AddToClassName()电话.第一种选择可能是慢的吗?因为它需要分析内存中的EF对象,生成SQL等.
我假设第二个选项是两个世界中最好的,因为我们可以围绕该SaveChanges()调用包装try catch ,并且如果其中一个失败,则一次只丢失n个记录.也许将每个批次存储在List <>中.如果SaveChanges()调用成功,请删除列表.如果失败,请记录项目.
最后一个选项可能最终也会非常慢,因为每个EF对象都必须在内存中才能SaveChanges()被调用.如果保存失败,则不会发生任何事情,对吧?
有关处理使用FormData上载到ASP.NET WebAPI处理程序的文件的所有文档/教程/问题MultipartFormDataStreamProvider用于处理多部分流以将其拆分为相关的表单字段和文件.
var root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
await Request.Content.ReadAsMultipartAsync(provider);
foreach (MultipartFileData file in provider.FileData)
{
// File
}
Run Code Online (Sandbox Code Playgroud)
但是,在处理期间,文件会自动写入目录.
当我可以HttpContext.Current.Request.Files[0].InputStream直接在内存中使用访问给定的文件流时,似乎有很多麻烦.
WebAPI如何直接访问文件流而无需使用IO开销MultipartFormDataStreamProvider?
官方教程:http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2
我有一个ASP.Net Web API应用程序,允许客户端(HTML页面和iPhone应用程序)上传图像.我正在使用本文中描述的异步上载任务.
当我想要保存到文件系统时,一切都很好,因为这就是这个代码在幕后看起来自动执行的操作.但是,我不想将上传的文件保存到文件系统中.相反,我想使用AWS SDK for .Net获取上传的流并将其传递到Amazon S3存储桶.
我已将代码设置为将流发送到AWS.我无法弄清楚的问题是如何从Web API方法获取上传的内容流,而不是让它自动保存到磁盘.
我希望我可以在MultipartFormDataStreamProvider中覆盖一个虚拟方法,它允许我对上传的内容做其他事情,而不是保存到磁盘,但似乎没有.
有什么建议?
我想通过进行ajax调用使用WebApi上传文件,文件将保存到数据库中.我尝试了这个链接中给出的代码 .在这里,它将收到的数据保存为硬盘驱动器,作为没有指定扩展名的文件,但我想做一些事情,比如我将文件保存到数据库时我也希望保存文件名和扩展名,如果我需要的话下载文件我可以提供文件名和扩展名.在链接中,文件作为文件保存到硬盘驱动器,但有任何方法可以直接将文件保存到DB.
我来自Web表单背景,并在C#中使用Web API学习角度,我有工作站点用于添加/编辑和删除对象记录.我知道想要继续解决更复杂的问题,但却想知道从哪里开始!
我发现最接近的是这篇文章看起来相当不错,但仅限于图片但很难跟随,因为它有点混乱,知道哪些响应有效. AngularJS .Net WebAPI上传图像并保存到数据库(MSSQL).
我想做的非常简单就是拥有一个带有属性Name的对象(String)和Logo(Logo存储在db binary字段中).从和角度视图保存对象(调用我的Web API的路径),包括验证名称和保存图像,如果已有图像,则显示当前图像.
如果有人良好的简单的例子都知道,将实现这一目标,理想适用于任何类型的文件作为工作在我的网站上载有的可能是PDF文件,例如我将非常感激.
我正在使用jQuery ajax上传文件,但想在webapi方法上添加一些参数,这里是:
var data = new FormData();
data.append("file", $("#file")[0].files[0]);
data.append("myParameter", "test"); // with this param i get 404
$.ajax({
url: '/api/my/upload/',
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function (data) {
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
Webapi控制器:
public class MyController : ApiController
{
public string Upload(string myParameter)
{
return System.Web.HttpContext.Current.Request.Files.Count.ToString() + " / " + myParameter;
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有myParameter一切正常,但是当我在formdata和api方法中包含myParameter时,我得到404,有没有机会让它工作?
c# ×5
asp.net ×2
ajax ×1
angularjs ×1
file-upload ×1
import ×1
jquery ×1
loops ×1
performance ×1
savechanges ×1