文件上传不让我保存
本文关键字:保存 文件 | 更新日期: 2023-09-27 18:34:24
我有一个令人困惑的问题。我正在尝试使用文件上传。以下代码在本地运行良好:
var postedFile = uploader.PostedFile;
var fileName = Path.GetFileName(postedFile.FileName);
var extension = Path.GetExtension(fileName);
var newFile = Guid.NewGuid() + extension;
var imageFilePath = Path.Combine(this.Server.MapPath("~/ProductImages"), newFile);
uploader.SaveAs(imageFilePath);
但是当我在互联网上将我的代码发布到我的服务器时,会发生以下异常:
找不到路径的一部分 [...]
当我将uploader.SaveAs(imageFilePath);
更改为uploader.SaveAs(imageFilePath.Replace(this.Request.ServerVariables["APPL_PHYSICAL_PATH"], "..''"));
时,会发生以下异常:
SaveAs 方法配置为需要有根路径,并且路径 [..] 未获得根。
有人会告诉我如何使用上传器吗?我该如何解决这个问题?
致谢
你的代码没有问题。当您在 Web 服务器上运行应用程序时,Web 服务器由操作系统中的用户管理。(对于 IS 中的 enginx 或应用程序池组,请无人进行检查)。您应该为要保存数据的文件夹设置权限。这可以在您的托管文件管理器面板中或通过直接访问操作系统来完成。
问题是本地帐户在活动目录上的远程资源上无效 - 您需要以 ComputerName$ 或匿名身份连接,具体取决于您使用的本地标识类型。
我能够在调试模式下上传,但不能在已发布的网站上上传,所以这可能会帮助你穆罕默德。
您确定服务器上存在 ProductImages 文件夹吗?
您可以尝试致电
Directory.CreateDirectory(this.Server.MapPath("~/ProductImages"))
在保存文件之前。如果目录不存在,它将创建目录,如果存在,它将不执行任何操作。
我终于通过设置文件夹的权限解决了这个问题。我为该文件夹设置了"应用程序池组"的写入权限,现在我可以通过我的应用程序在那里上传任何文件。
谢谢
试试这个..上传并在数据库中插入值..
string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.SaveAs(Server.MapPath("~/" + filename));
Stream str = FileUpload1.PostedFile.InputStream;
con.Open();
SqlCommand cmds = new SqlCommand("insert into datas(name,path,types,pricing)values(@name,@path,@types,@pricing)", con);
cmds.Parameters.AddWithValue("@name",d);
cmds.Parameters.AddWithValue("@path", filename);
cmds.Parameters.AddWithValue("@types", RadioButton1.Text);
cmds.Parameters.AddWithValue("@pricing", "FineGrained");
cmds.ExecuteNonQuery();
Response.Write("<script>alert('successfully uploaded');</script>");