winfrom 通过WebClient上传文件到服务器,始终报远程服务器返回错误 (401) 未经授权的错误

时间:2023-02-02 01:00:25
如题:
始终报远程服务器返回错误 (401) 未经授权的错误
public void UpLoadFile(string fileFullPath, string strUrlDirPath)
        {
            //得到要上传的文件文件名
            string fileName = fileFullPath.Substring(fileFullPath.LastIndexOf("\\") + 1);

            //上传路径整理
            if (strUrlDirPath.EndsWith("/") == false) strUrlDirPath = strUrlDirPath + "/";

            //保存在服务器上时,将文件改名(示业务需要)
            strUrlDirPath = strUrlDirPath + fileName;

            // 创建WebClient实例
            WebClient myWebClient = new WebClient();
            myWebClient.Credentials = CredentialCache.DefaultCredentials;
            myWebClient.Headers.Add("User-Agent", "Microsoft Internet Explorer");

            // 将要上传的文件打开读进文件流
            FileStream myFileStream = new FileStream(fileFullPath, FileMode.Open, FileAccess.Read);
            BinaryReader myBinaryReader = new BinaryReader(myFileStream);

            //打开远程Web地址,将文件流写入
            byte[] postArray = myBinaryReader.ReadBytes((int)myFileStream.Length);
            myFileStream.Close();
            try
            {
                Stream postStream = myWebClient.OpenWrite(strUrlDirPath, "PUT");
                if (postStream.CanWrite)
                {
                    postStream.Write(postArray, 0, postArray.Length);
                }
                postStream.Close();//关闭流  
                notifyIcon.ShowBalloonTip(1000, "提示", "截图上传成功", ToolTipIcon.Info);
                System.Threading.Thread.Sleep(1000);
                notifyIcon.Visible = false;
                notifyIcon.Visible = true;

            }
            catch
            {
                notifyIcon.ShowBalloonTip(1000, "提示", "截图上传失败", ToolTipIcon.Info);
            }


红色代码部分,就报401

11 个解决方案

#1


服务器在验证你身份的时候发生错误,如果第三方你可能需要提供APPID或者先登录

#2


把服务器接收目录权限分配给everyone

#3


没有看到红色代码部分,先确认下不用代码直接访问目标服务器上的路径可以成功否

#4


postStream.Close();
这是出错的地方

现在是访问的权限是有的,可以正常访问指定的文件夹,就是无法写入,已上传就报401的错误,
各种权限都试了一遍,还是不行

#5


引用
没有看到红色代码部分,先确认下不用代码直接访问目标服务器上的路径可以成功否


postStream.Close();
这是出错的地方

现在是访问的权限是有的,可以正常访问指定的文件夹,就是无法写入,已上传就报401的错误,
各种权限都试了一遍,还是不行

#6


引用
把服务器接收目录权限分配给everyone


这个怎么设置,是直接给接收文件夹设置权限吗?

#7


错误应该是401.x,关键这个x是多少

#8


引用
错误应该是401.x,关键这个x是多少


没有.x,直接就是远程服务器返回错误 (401) 未经授权

#9


对要存放上传文件的文件夹,给IUSR用户分配写权限;还可以看看日志

#10


问题已解决,
需要给设置登陆账号密码。

#11


你好,最近遇到相同的问题,需要从sharepoint上下载文档,手动下载可以的,请问代码怎么调整?登录账号和密码怎么设?

#1


服务器在验证你身份的时候发生错误,如果第三方你可能需要提供APPID或者先登录

#2


把服务器接收目录权限分配给everyone

#3


没有看到红色代码部分,先确认下不用代码直接访问目标服务器上的路径可以成功否

#4


postStream.Close();
这是出错的地方

现在是访问的权限是有的,可以正常访问指定的文件夹,就是无法写入,已上传就报401的错误,
各种权限都试了一遍,还是不行

#5


引用
没有看到红色代码部分,先确认下不用代码直接访问目标服务器上的路径可以成功否


postStream.Close();
这是出错的地方

现在是访问的权限是有的,可以正常访问指定的文件夹,就是无法写入,已上传就报401的错误,
各种权限都试了一遍,还是不行

#6


引用
把服务器接收目录权限分配给everyone


这个怎么设置,是直接给接收文件夹设置权限吗?

#7


错误应该是401.x,关键这个x是多少

#8


引用
错误应该是401.x,关键这个x是多少


没有.x,直接就是远程服务器返回错误 (401) 未经授权

#9


对要存放上传文件的文件夹,给IUSR用户分配写权限;还可以看看日志

#10


问题已解决,
需要给设置登陆账号密码。

#11


你好,最近遇到相同的问题,需要从sharepoint上下载文档,手动下载可以的,请问代码怎么调整?登录账号和密码怎么设?