我是Web Api的新手,我正在做我的第一个项目。我正在为我们公司开发移动CRM系统。
我想存储公司的标志,客户面对foto等。
我找到了一些关于这个主题的教程,但不幸的是,其中一些是旧的(不使用异步),其他的不起作用。
最后,我发现了这个:http://www.intstrings.com/ramivemula/articles/file-upload-using-multipartformdatastreamprovider-in-asp-net-webapi/它工作正常,但我不理解一些事情。
1)我应该使用App_Data (或任何其他文件夹,如/Uploads)来存储这些图像,或者更确切地说,是将图像存储在数据库中?
2)是否可以只设置.jpg、.png等支持的镜像,拒绝其他文件?
3)如何在upload方法中处理图片?像调整大小,减少文件大小,质量等?
谢谢
发布于 2014-04-20 07:17:53
这些问题实际上都与Web API或REST无关。
上面的所有工作都在Asp.Net,MVC,Web API1和2,自定义HTTP处理程序中工作,基本上在任何.Net代码中。
发布于 2014-01-24 20:07:06
1)我们将文件存储在与app_data不同的位置。我们有几个客户组,我们为他们提供了一个从数据库中获得的唯一文件夹。存储在数据库中也是一种选择,但如果您沿着这条路走下去,请确保您要保存的文件不直接属于您需要经常检索的表。没有对或错,但可以在this question and answer上阅读一些利弊。
2)如果您愚弄了该指南,您可以在循环中添加一个检查,以检查文件的结尾
List<string> denyList = new List<string>();
denyList.Add(".jpg");
foreach (MultipartFileData file in provider.FileData)
{
string fileName = Path.GetFileName(file.LocalFileName);
if(denyList.Contains(Path.GetExtension(fileName))
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
files.Add(Path.GetFileName(file.LocalFileName));
}3)调整图像大小是我从未亲自做过的事情,但我认为您应该看看System.Drawing.Graphics名称空间。找到一个链接,其中包含缩小图片大小的公认答案:ASP.Net MVC Image Upload Resizing by downscaling or padding
发布于 2014-04-20 07:26:22
@Binke从不在路径上使用字符串操作。例如,如果文件名类似于: some.file.txt,则fileName.split(‘.)1将不返回扩展名,如果文件没有扩展名,则将失败并出现索引超出范围的错误。请始终使用文件接口,即Path.GetExtension。
此外,使用扩展来获取内容类型是不安全的,特别是当涉及到图片和视频时,只要想想许多视频格式使用的avi扩展就知道了。
files.Add(Path.GetFileName(file.LocalFileName))应为files.Add(fileName)。
https://stackoverflow.com/questions/21295513
复制相似问题