2

我想将上传的文件保存在项目目录之外。当我使用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总是在项目的目录中。

我想将我上传的目录保存在我想要的任何地方。我怎样才能改变代码来做到这一点?

4

3 回答 3

1

您在编写时将其设置为服务器的目录:

     var path = AppDomain.CurrentDomain.BaseDirectory + fileName;

的使用

 AppDomain.CurrentDomain.BaseDirectory

指向当前域的目录。

于 2013-05-30T08:41:48.757 回答
1

我利用:

var path = Path.Combine(Server.MapPath(), filename);
file.SaveAs(path);

在这个堆栈帖子中有一篇关于 Server.MapPath() 的很好解释的帖子:Server.MapPath() Explained

引用文章的简短引用(强烈建议阅读全文):

  • Server.MapPath 指定映射到物理目录的相对或虚拟路径。
  • Server.MapPath(".") 返回正在执行的文件(例如 aspx)的当前物理目录
  • Server.MapPath("..") 返回父目录
  • Server.MapPath("~") 返回应用程序根目录的物理路径
  • Server.MapPath("/") 返回域名根目录的物理路径(不一定和应用的根目录相同)
于 2013-06-10T19:34:19.827 回答
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 目录以外的内容。

但是网站的身份必须对该目录路径具有写入权限,否则您将收到写入错误。

于 2013-05-30T09:20:01.363 回答