C#在服务器上保存多个文件并在一个单元格中收集它们的路径,这可能吗?
下面是一个脚本,用于上载服务器文件夹上的多个文件并将其路径存储在数据库中,但图像的路径将存储在多行中。C#在服务器上保存多个文件并在一个单元格中收集它们的路径,这可能吗?,c#,jquery,asp.net,file-upload,C#,Jquery,Asp.net,File Upload,下面是一个脚本,用于上载服务器文件夹上的多个文件并将其路径存储在数据库中,但图像的路径将存储在多行中。 例如:我上传了3张图片, image1.jpg,image2.jpg,image3.jpg。这些图像应该存储在一行中 现在的问题是,所有3个图像的路径都存储在3行下面。路径 上传第1行的/image1.jpg 上传/image1.jpgimage2.jpg行2 上传第3行中的/image1.jpgimage2.jpgimage3.jpg 我希望图像应该以这种方式存储: 上载/image1
例如:我上传了3张图片,
image1.jpg,image2.jpg,image3.jpg。这些图像应该存储在一行中
现在的问题是,所有3个图像的路径都存储在3行下面。路径 上传第1行的/image1.jpg
上传/image1.jpgimage2.jpg行2
上传第3行中的/image1.jpgimage2.jpgimage3.jpg
我希望图像应该以这种方式存储: 上载/image1.jpguploads/image1.jpgimage2.jpguploads/image1.jpgimage2.jpgimage3.jpg 1-使用JQuery多文件上传多个文件 此脚本: 这是 HTML表单
上传 上传文件 2-我修改了FileUpload.ashx以保存数据集中的所有文件路径,并将其转换为xml文件,最后将其保存在一个单元格中 FileUpload.ashx.cs
public void ProcessRequest(HttpContext上下文)
{
if(context.Request.Files.Count==0)
{
//日志请求(“未发送文件”);
context.Response.ContentType=“text/plain”;
Write(“未收到任何文件”);
}
其他的
{
//创建表以将所有文件路径保存在文件中
DataTable DT=新的DataTable(“FileTable”);
DataColumn dc=新的DataColumn(“文件路径”,类型(字符串));
DT.Columns.Add(dc);
HttpFileCollection hfc=HttpContext.Current.Request.Files;
对于(int i=0;i0)
{
DataRow dr=DT.NewRow();
System.IO.Path.GetFileName(hpf.FileName);
dr[“FilePath”]=“upload”+hpf.FileName;
DT.Rows.Add(dr);
SaveAs(HttpContext.Current.Server.MapPath(“/Upload”)+“\\”+hpf.FileName);
字符串文件名=hpf.FileName;
字符串FileType=hpf.ContentType;
int FileSize=hpf.ContentLength;
context.Response.ContentType=“text/plain”;
context.Response.Write(“{\”name\“:\”+FileName+“\”,\”type\“:\”+FileType+“\”,\”size\“:\”+FileSize+“\”);
}
}
数据集ds=新数据集();
ds.Tables.Add(DT);
//连接到数据库以传递过程ds.GetXml()
SqlConnection conn=新的SqlConnection(ConfigurationManager.ConnectionString[“sundbc”].ToString());
var cmd=新的SqlCommand(“sp_SaveFile”,conn);
cmd.CommandType=CommandType.storedProcess;
cmd.Connection=conn;
conn.Open();
cmd.Parameters.AddWithValue(“@xmlFile”,ds.GetXml());
cmd.ExecuteNonQuery();
//可以通过此处的DataReader对象访问数据。
康涅狄格州关闭();
}
}
因为您为每张图片添加了一个新行……我建议不要将值列表存储在一行中,因为这将在以后带来越来越多的困难。例如,删除单个图像路径或对图像进行排序将需要更多的编码。您的权利是因为我希望将其转换为XML文件并通过ds.GetXml()存储,然后将它传递给sql,这样我就可以检索它。你给我的建议是,我只想在一个单元格中保存多个文件路径,以便像Facebook image systemvb@Filburt那样轻松检索它,因为你为每张图片添加了一个新行……我建议不要将值列表存储在一行中,因为这样以后会带来越来越多的困难。例如,删除单个图像路径或对图像进行排序将需要更多的编码。您的权利是因为我希望将其转换为XML文件并通过ds.GetXml()存储,然后将其传递给sql以便检索。您向我建议的是将多个文件路径保存在一个单元格中,以便像Facebook image systemvb@Filburt那样轻松检索
public void ProcessRequest(HttpContext context)
{
if (context.Request.Files.Count == 0)
{
//LogRequest("No files sent.");
context.Response.ContentType = "text/plain";
context.Response.Write("No files received.");
}
else
{
// create table to save all file paths in on file
DataTable DT = new DataTable("FileTable");
DataColumn dc = new DataColumn("FilePath", typeof(string));
DT.Columns.Add(dc);
HttpFileCollection hfc = HttpContext.Current.Request.Files;
for (int i = 0; i < hfc.Count; i++)
{
HttpPostedFile hpf = hfc[i];
if (hpf.ContentLength > 0)
{
DataRow dr = DT.NewRow();
System.IO.Path.GetFileName(hpf.FileName);
dr["FilePath"] = "upload" + hpf.FileName;
DT.Rows.Add(dr);
hpf.SaveAs(HttpContext.Current.Server.MapPath("/Upload") + "\\" + hpf.FileName);
string FileName = hpf.FileName;
string FileType = hpf.ContentType;
int FileSize = hpf.ContentLength;
context.Response.ContentType = "text/plain";
context.Response.Write("{\"name\":\"" + FileName + "\",\"type\":\"" + FileType + "\",\"size\":\"" + FileSize + "\"}");
}
}
DataSet ds = new DataSet();
ds.Tables.Add(DT);
// connect to data base to pass Procedure ds.GetXml()
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sundbc"].ToString());
var cmd = new SqlCommand("sp_SaveFile", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
conn.Open();
cmd.Parameters.AddWithValue("@xmlFile", ds.GetXml());
cmd.ExecuteNonQuery();
// Data is accessible through the DataReader object here.
conn.Close();
}
}