如何在MVC上实现图片上传的功能
怎么在MVC上实现图片上传的功能
要求上传到一个文件夹 然后读取文件夹的路径 保存到数据库中
------解决思路----------------------
html的页面就不用给了吧
要求上传到一个文件夹 然后读取文件夹的路径 保存到数据库中
------解决思路----------------------
// 检查是否是 multipart/form-data
if (!Request.Content.IsMimeMultipartContent("form-data"))
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
// 设置上传目录
var provider = new MultipartFormDataStreamProvider("F:\\");
var queryp = Request.GetQueryNameValuePairs();//获得查询字符串的键值集合
Hashtable hash = new Hashtable();
var bodyparts = await Request.Content.ReadAsMultipartAsync(provider);
int i = -1;
foreach (var bodypart in bodyparts.FileData)
{
i++;
string key1 = "error" + i;
string key2 = "errmsg" + i;
hash[key1] = 1;
hash[key2] = "上传出错";
string orfilename = bodypart.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');
FileInfo fileinfo = new FileInfo(bodypart.LocalFileName);
//最大文件大小
int maxSize = 100000000;
if (fileinfo.Length <= 0)
{
hash[key1] = 1;
hash[key2] = "请选择上传文件。";
}
else if (fileinfo.Length > maxSize)
{
hash[key1] = 1;
hash[key2] = "上传文件大小超过限制。";
}
else
{
string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));
//定义允许上传的文件扩展名
const string fileTypes = "gif,jpg,jpeg,png,bmp";
if (String.IsNullOrEmpty(fileExt)
------解决思路----------------------
Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)
{
hash[key1] = 1;
hash[key2] = "上传文件扩展名是不允许的扩展名。";
}
else
{
String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);
fileinfo.CopyTo(Path.Combine("F:\\", newFileName + fileExt), true);
fileinfo.Delete();
hash[key1] = 0;
hash[key2] = "上传成功";
}
}
}
return hash;
html的页面就不用给了吧