我想将上传的文件保存在项目目录之外。当我使用HttpPostedFileBase.SaveAs(path)
时,文件目标将位于服务器的目录中。
例如:
HttpPostedFileBase fileurl = null;
foreach (string file in Request.Files)
{
fileurl = Request.Files[file];
}
string extension = Path.GetExtension(fileurl.FileName);
if (extension == ".zip" || extension == ".rar")
{
if (fileurl != null && fileurl.ContentLength > 0)
{
var fileName = Path.GetFileName(fileurl.FileName);
var path = AppDomain.CurrentDomain.BaseDirectory + fileName;
fileurl.SaveAs(path);
path
始终位于项目目录中。
我想将我上传的目录保存到我想要的任何地方。如何更改代码才能执行此操作?
答案 0 :(得分:1)
您在编写时将其设置为服务器的目录:
var path = AppDomain.CurrentDomain.BaseDirectory + fileName;
的用法
AppDomain.CurrentDomain.BaseDirectory
指向当前域的目录。
答案 1 :(得分:1)
我利用:
var path = Path.Combine(Server.MapPath(), filename);
file.SaveAs(path);
在这个堆栈帖子中有一篇关于Server.MapPath()的解释很好的帖子:Server.MapPath() Explained
引用文章(highly recommend reading the full post)的简短引用:
- Server.MapPath指定要映射到的相对或虚拟路径 物理目录。
- Server.MapPath(“。”)返回当前的物理目录 正在执行的文件(例如aspx)
- Server.MapPath(“..”)返回父目录
- Server.MapPath(“〜”)返回到根的物理路径 应用
- Server.MapPath(“/”)返回到根目录的物理路径 域名(不一定与域名的根目录相同) 应用程序)
答案 2 :(得分:0)
我会用这样的东西。
foreach (string file in Request.Files)
{
var fileurl = Request.Files[file] as System.Web.HttpPostedFileBase;
var stream = System.IO.File.Create("PATH_TO_DIRECTORY");
fileurl.InputStream.Seek(0, SeekOrigin.Begin);
fileurl.InputStream.CopyTo(stream);
stream.Close();
}
如果您想要写入AppDomain目录以外的其他目录。
但是网站的标识必须具有对该目录路径的写入权限,否则您将收到写入错误。