gpt4 book ai didi

c# - 奇怪的字符串格式+来自mysql中文件上传的路径名

转载 作者:行者123 更新时间:2023-11-29 14:52:36 25 4
gpt4 key购买 nike

嘿大家,我在将图像上传到我的项目路径时遇到问题,图像包含在 ~/userdata/UserID/uploadedimage/image.jpg

我使用以下方法上传图片并将其路径存储在我的数据库中。

    protected void UploadButton_Click(object sender, EventArgs e)
{

if (FileUploadControl.HasFile)
{
try
{
string theUserId = Session["UserID"].ToString();
OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;");
cn.Open();
//string filename = Path.GetFileName(FileUploadControl.FileName);
string fileuploadpath = Server.MapPath("~/userdata/" + theUserId + "/uploadedimage/") + Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(fileuploadpath);
StatusLabel.Text = "Upload status: File uploaded!";

OdbcCommand cmd = new OdbcCommand("INSERT INTO Pictures (UserID, picturepath) VALUES ('" + theUserId + "' , '" + fileuploadpath + "')", cn);
cmd.ExecuteNonQuery();
}

catch (Exception ex)
{
StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;

}

}
}
}

我发现该路径不是我的项目目录的路径,它很奇怪:

enter image description here

这是我的数据库中的一个片段,第一个 idPictures = 1 是我需要的正确路径名。

idPictures = 2 是文件上传插入到我的数据库中的那个?

我怎样才能得到它,这样它就会给出这样的路径名:

~/userdata/2/uploadedimage/batman-for-facebook.jpg

编辑:

如果我尝试这个:

string fileuploadpath = ("~/userdata/"+theUserId+"/uploadedimage/")+Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(fileuploadpath);
StatusLabel.Text = "Upload status: File uploaded!";

OdbcCommand cmd = new OdbcCommand("INSERT INTO Pictures (UserID, picturepath) VALUES ('"+theUserId+"','"+fileuploadpath+"')", cn);
cmd.ExecuteNonQuery();
}

catch (Exception ex)
{
StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;

}

}
}

}

我收到错误:

文件无法上传。发生以下错误:SaveAs 方法配置为需要 root 路径,而路径 '~/userdata/1/uploadedimage/holypally.jpg' 不是 root 路径。

最佳答案

我怀疑它在 SQL 语句中将反斜杠视为转义字符。不要忘记,您正在使用 Server.MpaPath - 即您正在尝试查找该文件的 Windows 绝对文件名。

当您不使用参数化 SQL 语句,而是将本质上是用户指定的文本直接包含到 SQL 中时,就会发生这种情况。 不要这样做。使用参数化 SQL 命令,单独指定值,然后您至少不需要担心不稳定的值。

当然,您仍然需要确定您是否真的想要存储翻译后的路径,但这是另一回事。

关于c# - 奇怪的字符串格式+来自mysql中文件上传的路径名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5432003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com