如何上传多张图片?嗨,我想在数据库中上传多张图片,我选择了多张图片然后上传按钮,但只在数据库中插入了一张图片,任何专家都可以告诉我我哪里错了。
图像
public partial class Image
{
public int imgID { get; set; }
public string ImgPath { get; set; }
public long ProdID { get; set; }
public virtual Product Product { get; set; }
}
控制者
public ActionResult AddNewProducts(ProductViewModel prod, List file)
{
try
{
List PTlist = _IproductType.PTList();
ViewBag.Ptlist = new SelectList(PTlist, "PType_ID", "P_Name");
//Product Color List
List pColorList = _IProductColor.PColorlist();
ViewBag.pColor_List = new SelectList(pColorList, "C_ID", "C_Name_OR_Code");
List pSizeList = _ISize.pSizeList();
ViewBag.pSizeLists = new SelectList(pSizeList, "S_ID", "S_Size");
string PathDB = string.Empty;
Image img = new Image();
foreach (HttpPostedFileBase files in file)
{
string filename = Path.GetFileName(files.FileName);
string _filename = DateTime.Now.ToString("yymmssff") + filename;
string extension = Path.GetExtension(files.FileName);
string path = Path.Combine(Server.MapPath("~/Upload/"), _filename);
PathDB = "~/Upload/" + _filename;
if (extension.ToLower() == ".jpeg" || extension.ToLower() == ".jpg" || extension.ToLower() == ".png")
{
if (files.ContentLength <= 1000000)
{
img = new Image();
img.imgID = prod.ImgID;
img.ImgPath = PathDB;
img.ProdID = prod.ProductID;
}
else
ViewBag.sizemsg = "Size Limit accessed ";
}
else
ViewBag.fileformat = "File is not Format is not Correct";
}
}
}
用户上传了一堆图像
如果您这样做,那肯定是一个不好的方法。将批量数据转移到仅实际使用的一小部分? Web和数据库开发是一个非常常见的初学者错误。将大量CPU工作放在服务器端是另一回事。
[无论您正在进行什么处理,理想情况下,您都应该在客户端上进行:浏览器插件。自定义客户端应用程序。 JavaScript元素。即使只是要求用户提供特定格式。诸如此类的事情。然后仅上传该特定图像。如果服务器永远不需要从不需要的图像中看到一点,那是一个很好的设计。
登台表/数据库
这是您对方法的真正承诺,或者出于某种原因这不是一个选择。为了使服务器处理并显示图像,必须将其必须保存在服务器端。
在内存中并不是真正的选择。凭借大规模的paralell设计以及每个CPU内核50-100个线程的ThreadPool,众所周知,WebServer易于运行out of resources, particular memory。并假设您实际上可以像在开始时那样在内存中保留某些内容(设计并没有那么容易,这使您脱离了那条路)。
因此,下一个最佳选择是登台表或临时目录。您可以在这里进行的操作:存储您刚刚上传的图像