我有一个上传功能,它会在上传点击后在grdiview中显示上传的图像。 这是代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string[] filePaths = Directory.GetFiles(Server.MapPath("~/Uploads/"));
List<ListItem> files = new List<ListItem>();
foreach (string filePath in filePaths)
{
string fileName = Path.GetFileName(filePath);
files.Add(new ListItem(fileName, "~/Uploads/" + fileName));
}
GridView1.DataSource = files;
GridView1.DataBind();
}
}
protected void Upload(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Uploads/") + fileName);
Response.Redirect(Request.Url.AbsoluteUri);
}
}
}
}
这很好用。它上传并显示在gridview中。我遇到的问题是图片不是指向路径。它不在uploads
文件夹中。
有什么伎俩吗?
UPDATE 在解决方案资源管理器中显示所有内容,我得到了这个:
答案 0 :(得分:0)
可能的解决方案是,在保存/上传文件时,可以使用Path.Combine
FileUpload1.PostedFile.SaveAs( Path.Combine(Server.MapPath("~/Uploads/"),fileName))
,同样适用于:
files.Add(new ListItem(fileName,Path.Combine(Server.MapPath("~/Uploads/"),fileName)));
答案 1 :(得分:0)
我主要使用以下方法。
您可以通过以下示例代码获得帮助...
string fnam, newname,ext, serpath,dbpath="", fid;
ext = System.IO.Path.GetExtension(File_Upload.PostedFile.FileName);
fnam = File_Upload.PostedFile.FileName;
fid = Guid.NewGuid().ToString();
newname = fid + ext;
serpath = Path.Combine(Server.MapPath("uploads\\"), newname);
dbpath = "~\\uploads\\" + newname;
File_Upload.PostedFile.SaveAs(serpath);