当前位置: 首页 > 知识库问答 >
问题:

无法上载服务器上的文件

史同化
2023-03-14

我正在尝试上传一个图像。当我从本地主机上进行时,它工作得很好,但当我发布它时,它从服务器上抛出一个错误:

当我使用此代码时:

public string ImagePath(HttpPostedFileBase imgfile)
        {
            var path = "";
            // code for saving the image file to a physical location.
            var fileName = Path.GetFileName(imgfile.FileName);


            path = Path.Combine(HttpContext.Server.MapPath("~/Images/Sections/Developer/ClientLogo"), fileName);

            string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(imgfile.FileName);
            int iteration = 1;
            while (System.IO.File.Exists((path)))
            {
                fileName = string.Concat(fileNameWithoutExtension, "-", iteration, System.IO.Path.GetExtension(imgfile.FileName));

                path = Path.Combine(HttpContext.Server.MapPath("~/Images/Sections/Developer/ClientLogo"), fileName);
                iteration++;
            }
            imgfile.SaveAs(path);
            // prepare a relative path to be stored in the database and used to display later on.
            path = Url.Content(Path.Combine("~/Images/Sections/Developer/ClientLogo", fileName));
            return path;
        }
And when I use Server.MapPath instead of HttpContext.Server.MapPath it throw different error:

错误为:

System.io.DirectoryNotFoundException:找不到路径“d:\inetpub\vhosts\xx.com\httpdocs\images\sections\developer\clientlogo\demo.png”的一部分。在system.io.__error.winioerr(Int32 errorCode,String maybeFullPath)在system.io.filestream.init(String path,FileMode模式,FileAccess access,Int32 rights,Boolean useRights,FileShare share,Int32 bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,String msgPath,Boolean useLongPath,Boolean checkHost)在system.io.filestream.ctor(

我试图从我的本地主机更改权限,但没有任何工作...请给我一些建议

共有1个答案

融宏伟
2023-03-14

您的web应用程序没有权限写入您试图保存图像的位置。这通常通过向web.config中添加一个条目来处理,该条目指向保存所有上载的文件夹

<appSettings>
  ...
  <add key="uploadPath" value="C:\Uploads"/>
  ...
</appSettings>

然后在代码中读取该配置条目以标识将保存映像的路径:

....
string path = ConfigurationManager.AppSettings["uploadPath"];
string filePath = Path.Combine(path, fileName);
....

然后,为了将文件保存到此目录,您需要设置对该目录的权限,以便运行web应用程序的用户对该目录具有写权限。这将允许您将文件从web应用程序写入该文件夹。

这样,作为开发人员,您就不需要指定文件的去向。系统管理员可以决定文件的去向以及支持web应用程序所需的权限。

 类似资料:
  • 当我尝试将对象内容上载到FTP服务器 [它的值从[T:InputFileUpload]组件中获取] 我的web浏览器中的加载指示器播放并且不会停止 调试时,我发现我的come在一行中冻结 但是我尝试了3个方法(如代码所示)来上载 ,但是所有方法仍然不工作 将文件上载到FTPServer控制器方法

  • 我有一个jenkins的工作,将一个ear文件部署到WebLogic12服务器上。当我最初运行作业时,部署是成功的。但是,如果我想通过重新运行jenkins作业来覆盖ear文件,则不会覆盖该文件。另一个版本在ear文件名的末尾安装。 是否有一个配置可以用来始终覆盖ear文件? 如果服务器上当前有ear,则可以正确地在服务器上部署和扩展ear文件。如果jenkins作业再次运行,它将创建ear文件的

  • 我花了几个小时试图将文件上载到本地服务器文件夹,但比预期的困难,请帮助。 在我的前端下面插入文件 下面是我的控制器

  • 我想上传一个文件到不同的服务器使用卷曲。我读过许多类似的问题,但我没有得到任何解决我的问题。下面是我现在得到的代码: 当我运行此脚本时,它将保持运行200秒,并以以下方式响应: Sep 17 20:56:58 xxxxx vsftpd[2613]:[user]确定登录:客户端“yyyyy” Sep 17 20:56:58 xxxxx vsftpd[2618]:[用户]FTP响应:客户端“YYYYY

  • 我有一个图像上传场景要执行。使用Jmeter进行测试。 使用Jmeter > < li> 步骤: 推出Jmeter2.9 将HTTP服务器添加到工作台,端口8080 将IE网络设置设置为代理、端口8080和本地主机。 启动xyz。aspx网页 已登录到应用程序。 单击上载图像并选择图像 观察:<br>未上载图像 不使用Jmeter > < li> 步骤: 启动xyz。aspx网页 已登录到应用程序

  • 我正在尝试上载文件,但无法工作: 有用信息:运行IIS Express(使用PHP5.3)-Windows 7 Professional 32位 代码: move_uploaded_file($_FILES[图像][名称],/图像/。$_FILES["Imagem"]["name"])或die("Error:".print_r($_FILES)); 它打印:数组([imagem]= 我确信路径是正