相关疑难解决方法(0)

如何接受文件POST

我正在使用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)

c# asp.net-mvc-4

242
推荐指数
9
解决办法
36万
查看次数

在创建1000个Entity Framework对象时应该何时调用SaveChanges()?(比如导入时)

我正在运行一个导入,每次运行将有1000个记录.只是在我的假设上寻找一些确认:

以下哪一项最有意义:

  1. 运行SaveChanges()每个AddToClassName()电话.
  2. SaveChanges()nAddToClassName()呼叫运行一次.
  3. 运行SaveChanges()后,所有的的AddToClassName()电话.

第一种选择可能是慢的吗?因为它需要分析内存中的EF对象,生成SQL等.

我假设第二个选项是两个世界中最好的,因为我们可以围绕该SaveChanges()调用包装try catch ,并且如果其中一个失败,则一次只丢失n个记录.也许将每个批次存储在List <>中.如果SaveChanges()调用成功,请删除列表.如果失败,请记录项目.

最后一个选项可能最终也会非常慢,因为每个EF对象都必须在内存中才能SaveChanges()被调用.如果保存失败,则不会发生任何事情,对吧?

import performance loops entity-framework savechanges

73
推荐指数
3
解决办法
3万
查看次数

WebAPI文件上传 - 无需将文件写入磁盘

有关处理使用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

c# asp.net multipartform-data asp.net-web-api

45
推荐指数
1
解决办法
4万
查看次数

是否可以覆盖MultipartFormDataStreamProvider,这样就不会将上传保存到文件系统中?

我有一个ASP.Net Web API应用程序,允许客户端(HTML页面和iPhone应用程序)上传图像.我正在使用本文中描述的异步上载任务.

当我想要保存到文件系统时,一切都很好,因为这就是这个代码在幕后看起来自动执行的操作.但是,我不想将上传的文件保存到文件系统中.相反,我想使用AWS SDK for .Net获取上传的流并将其传递到Amazon S3存储桶.

我已将代码设置为将流发送到AWS.我无法弄清楚的问题是如何从Web API方法获取上传的内容流,而不是让它自动保存到磁盘.

我希望我可以在MultipartFormDataStreamProvider中覆盖一个虚拟方法,它允许我对上传的内容做其他事情,而不是保存到磁盘,但似乎没有.

有什么建议?

c# asp.net-web-api

31
推荐指数
2
解决办法
1万
查看次数

使用WebApi,ajax上传文件

我想通过进行ajax调用使用WebApi上传文件,文件将保存到数据库中.我尝试了这个链接中给出的代码 .在这里,它将收到的数据保存为硬盘驱动器,作为没有指定扩展名的文件,但我想做一些事情,比如我将文件保存到数据库时我也希望保存文件名和扩展名,如果我需要的话下载文件我可以提供文件名和扩展名.在链接中,文件作为文件保存到硬盘驱动器,但有任何方法可以直接将文件保存到DB.

c# ajax asp.net-web-api

7
推荐指数
1
解决办法
2万
查看次数

如何使用AngularJS,asp.net web API和fileupload保存到SQL上传文件

我来自Web表单背景,并在C#中使用Web API学习角度,我有工作站点用于添加/编辑和删除对象记录.我知道想要继续解决更复杂的问题,但却想知道从哪里开始!

我发现最接近的是这篇文章看起来相当不错,但仅限于图片但很难跟随,因为它有点混乱,知道哪些响应有效. AngularJS .Net WebAPI上传图像并保存到数据库(MSSQL).

我想做的非常简单就是拥有一个带有属性Name的对象(String)和Logo(Logo存储在db binary字段中).从和角度视图保存对象(调用我的Web API的路径),包括验证名称和保存图像,如果已有图像,则显示当前图像.

如果有人良好的简单的例子都知道,将实现这一目标,理想适用于任何类型的文件作为工作在我的网站上载有的可能是PDF文件,例如我将非常感激.

c# asp.net file-upload asp.net-web-api angularjs

7
推荐指数
1
解决办法
3万
查看次数

带有额外参数的Webapi ajax formdata上传

我正在使用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,有没有机会让它工作?

jquery multipartform-data asp.net-web-api

6
推荐指数
1
解决办法
9413
查看次数