fileupload.PostedFile.SaveAs不保存asp.net中的文件夹中的图像

时间:2017-12-13 02:29:58

标签: c# asp.net sql-server gridview save-as

string fileName = Path.GetFileName(fup.PostedFile.FileName);
fileName = Guid.NewGuid() + fileName;

if (Path.GetExtension(fup.PostedFile.FileName) == ".jpg" || Path.GetExtension(fup.PostedFile.FileName) == ".jpeg" || Path.GetExtension(fup.PostedFile.FileName) == ".bmp" || Path.GetExtension(fup.PostedFile.FileName) == ".png")
{
    string s = Server.MapPath("~/Images/" + fileName);
    fup.PostedFile.SaveAs(s);
    how = "file";

    SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString);
    SqlCommand cmd = new SqlCommand(@"update product set sub_cat = '" + ddlcategory.SelectedValue.Trim() + "',name='" + Pnam.Text.Trim() + "',pic='" + fileName + "',price=" + price.Text.Trim() + ",description='" + desc.Text.Trim() + "',unit='" + ddlUnit.SelectedValue.Trim() + "',catgeory='" + ddlcat.SelectedValue.Trim() + "'  where product_id=" + pid.Text.Trim(), cn);
    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();
    gvproduct.EditIndex = -1;
    fillgrid();

    show = "Update";
}

这是我在Image(文件夹)中保存图像文件的代码。执行此查询后,没有图像保存在文件夹中。但是这些图像显示在GridView中, 哪个代码是这样的:

<asp:TemplateField HeaderText="Image">
  <ItemTemplate>
      <asp:Image ID="imgPd" runat="server" Height="60px"
          ImageUrl='<%#"~/Images/"+Eval("pic").ToString() %>' Width="60px" />
  </ItemTemplate>
  <EditItemTemplate>
      <asp:FileUpload ID="FileUploadGV" runat="server" Width="50px" />

2 个答案:

答案 0 :(得分:0)

我在下面的方法中将文件保存到文件夹中。

您可以将文件夹名称(例如Images)和文件名(例如FileUploadGV.PostedFile)传递给该方法。

private void UploadFile(string FolderName, HttpPostedFile file)
{
    // make folder path
    string FolderPath = "~\\" + FolderName;

    // create folder directory info
    DirectoryInfo FolderDir = new DirectoryInfo(Server.MapPath(FolderPath));

    // check if folder directory not exist
    if (!FolderDir.Exists)
    {
        // create directory
        FolderDir.Create();
    }

    // define file path
    string FilePath = Path.Combine(Server.MapPath(FolderPath), file.FileName);

    // check if file not exist
    if (!File.Exists(FilePath))
    {
        // save file into folder directory
        file.SaveAs(FilePath);
    }
}

额外:要从文件夹中删除文件,请使用以下方法:

private void DeleteFile(string FileName)
{
    // make file path
    string path = Server.MapPath(FileName);

    // check if file exist
    if (File.Exists(path))
    {
        // delete file from folder
        File.Delete(path);
    }
}

答案 1 :(得分:0)

在服务器上,图像(我在其中保存图像)文件夹没有应用程序池权限。在给予读写权限后。此问题已得到解决。