asp.net【多文件上传,并保存到数据库】

zh2yu 2011-07-12 09:56:40
我是新手,我的项目中有一个多文件上传的功能,多文件上传是成功的,但是保存到数据库,每次都是只保存最后一个选中的文件,请各位大侠帮忙,我不知道循环保存实体,并保存到session中怎么写

下面是我的代码

HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);

if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
mdl_upload_file_list.FILE_NAME = fileName;
mdl_upload_file_list.FILE_TYPE = fileExtension;
mdl_upload_file_list.UPLOAD_DATE = DateTime.Now;
mdl_upload_file_list.FILE_SIZE = 15;
mdl_upload_file_list.PRODUCT_LIST_ID = 38;
}
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("upload/") + fileName);
}
Session["file_info"] = mdl_upload_file_list;

...全文
169 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2011-07-12
  • 打赏
  • 举报
回复
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("upload/") + fileName);
执行完毕之后就进行执行数据库的保存啊,。是不是你的代码位置不对啊
zh2yu 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 fantasy_song 的回复:]
using System.Collections.Generic;



List<对象> list = new List<对象>();
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
Ht……
[/Quote]

好像不是你说的这个问题,我在看看吧,list的count值每次都是1
fantasy_song 2011-07-12
  • 打赏
  • 举报
回复
using System.Collections.Generic;



List<对象> list = new List<对象>();
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);

if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
mdl_upload_file_list.FILE_NAME = fileName;
mdl_upload_file_list.FILE_TYPE = fileExtension;
mdl_upload_file_list.UPLOAD_DATE = DateTime.Now;
mdl_upload_file_list.FILE_SIZE = 15;
mdl_upload_file_list.PRODUCT_LIST_ID = 38;
}
list.add(mdl_upload_file_list);
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("upload/") + fileName);
}
Session["file_info"] = list;


add写在前面试试,最好自己跟踪调试看一下
zh2yu 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fantasy_song 的回复:]
using System.Collections.Generic;



List<对象> list = new List<对象>(); HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
Http……
[/Quote]

为什么我在另外一个页面取Session["file_info"] 的值他的count是1,但是我上传的文件是3个,我取的方式是

List<MainLineTravel.Model.UPLOAD_FILE_LIST> list_mdl_upload_file_list=Session["file_info"] as List<MainLineTravel.Model.UPLOAD_FILE_LIST>;
fantasy_song 2011-07-12
  • 打赏
  • 举报
回复
using System.Collections.Generic;



List<对象> list = new List<对象>(); HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);

if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
mdl_upload_file_list.FILE_NAME = fileName;
mdl_upload_file_list.FILE_TYPE = fileExtension;
mdl_upload_file_list.UPLOAD_DATE = DateTime.Now;
mdl_upload_file_list.FILE_SIZE = 15;
mdl_upload_file_list.PRODUCT_LIST_ID = 38;
}
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("upload/") + fileName);
list.add(mdl_upload_file_list);
}
Session["file_info"] = list;
zh2yu 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fantasy_song 的回复:]
引用 8 楼 zh2yu 的回复:
引用 6 楼 fantasy_song 的回复:
引用 5 楼 zh2yu 的回复:
引用 4 楼 fantasy_song 的回复:
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile+……
[/Quote]

我才接触.net,不知道怎么写,而且好像只有单个对象才可以add,如果可以麻烦您写出来,非常感谢。
fantasy_song 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zh2yu 的回复:]
引用 6 楼 fantasy_song 的回复:
引用 5 楼 zh2yu 的回复:
引用 4 楼 fantasy_song 的回复:
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFi……
[/Quote]

那就建个对象的List,然后在循环里add
zh2yu 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fantasy_song 的回复:]
引用 5 楼 zh2yu 的回复:
引用 4 楼 fantasy_song 的回复:
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFil……
[/Quote]

但是我想得到是所有上传文件的list,并存到session中
zjq8888882009 2011-07-12
  • 打赏
  • 举报
回复
for (int iFile = 0; iFile < files.Count; iFile++)
{
mdl_upload_file_list=Session["file_info"+iFile];
bllFileInfo.add(mdl_upload_file_list);
}

既然已经得到了,所有的对象,插数据很简单的啦
fantasy_song 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zh2yu 的回复:]
引用 4 楼 fantasy_song 的回复:
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileNam……
[/Quote]

对的

HttpFileCollection files = HttpContext.Current.Request.Files;
for(int iFile = 0; iFile < files.Count; iFile++)
{
mdl_upload_file_list对象=(mdl_upload_file_list对象)Session["file_info"+iFile];
}
zh2yu 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fantasy_song 的回复:]
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
……
[/Quote]

如果是这样,我取 Session["file_info"]的值还是单个的mdl_upload_file_list对象
fantasy_song 2011-07-12
  • 打赏
  • 举报
回复
HttpFileCollection files = HttpContext.Current.Request.Files;
for (int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);

if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
mdl_upload_file_list.FILE_NAME = fileName;
mdl_upload_file_list.FILE_TYPE = fileExtension;
mdl_upload_file_list.UPLOAD_DATE = DateTime.Now;
mdl_upload_file_list.FILE_SIZE = 15;
mdl_upload_file_list.PRODUCT_LIST_ID = 38;
}
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("upload/") + fileName);
Session["file_info"+iFile] = mdl_upload_file_list;
}
zh2yu 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fantasy_song 的回复:]
Session["file_info"] = mdl_upload_file_list;

写到for循环中

加个count识别

demo:
Session["file_info"+iFile] = mdl_upload_file_list;

取的时候循环取出
[/Quote]

真不好意,我就是这个循环不知道怎么写,才问的,如果可以麻烦您写出来,谢谢
fantasy_song 2011-07-12
  • 打赏
  • 举报
回复
Session["file_info"] = mdl_upload_file_list;

写到for循环中

加个count识别

demo:
Session["file_info"+iFile] = mdl_upload_file_list;

取的时候循环取出
flyerwing 2011-07-12
  • 打赏
  • 举报
回复

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧