winform 上传文件到服务器上;删除,打开服务器上的文件

时间:2022-06-09 04:00:35
       ///**//// <summary>
        // WebClient上传文件至服务器
        // </summary>
        // <param name="fileNamePath">文件名,全路径格式</param>
        // <param name="uriString">服务器文件夹路径</param>
        // <param name="IsAutoRename">是否自动按照时间重命名</param>
        public void UpLoadFile(string fileNamePath, string uriString, bool IsAutoRename)
        {
            if(cobFolder.Text.Trim().Equals("-请选择-"))
            {
                MessageBox.Show("请选择文件夹再上传文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }else
            {
                uriString = uriString + "\\" + cobFolder.Text;
            }
            if (!Directory.Exists(uriString))
            {
                Directory.CreateDirectory(uriString);
            }
            string fileName = fileNamePath.Substring(fileNamePath.LastIndexOf("\\") + 1);
            string NewFileName = fileName;
            string[] file = fileName.Split('.');
            string FileName1 = "";
            FileName1 = fileName.Substring(0,fileName.IndexOf("."));
            if (file.Length >= 2)
            {
                FileName1 = file[0].ToString();
            }
            else
            {
                FileName1 = fileName.Substring(fileName.IndexOf("."), fileName.Length - fileName.IndexOf("."));
            }
            if (IsAutoRename)
            {

                NewFileName = FileName1 +"_"+ DateTime.Now.ToString("yyyyMMdd") + fileNamePath.Substring(fileNamePath.LastIndexOf("."));
            }

            string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
            if (uriString.EndsWith("/") == false) uriString = uriString + "/";

            uriString = uriString + NewFileName;
            //Utility.LogWriter log = new Utility.LogWriter();
            /**/
            /// 创建WebClient实例
            WebClient myWebClient = new WebClient();
            myWebClient.Credentials = CredentialCache.DefaultCredentials;
            // 要上传的文件
            FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
            //FileStream fs = OpenFile();
            BinaryReader r = new BinaryReader(fs);
            byte[] postArray = r.ReadBytes((int)fs.Length);
            int sendFileCount = 0;
            if (postArray.Length % 512 == 0)
            {
                sendFileCount = postArray.Length / 512;
            }
            else
            {
                sendFileCount = postArray.Length / 512 + 1;
            }
            progressBar1.Maximum = sendFileCount;
            progressBar1.Minimum = 0;
            progressBar1.Value = 0;
            Stream postStream = myWebClient.OpenWrite(uriString, "PUT");

            try
            {
                if (postStream.CanWrite)
                {
                     MessageBox.Show("上传文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
                                       
                    postStream.Close();
                    fs.Dispose();
                 }
                else
                {
                    postStream.Close();
                    fs.Dispose();
                    MessageBox.Show("上传文件加载失败,文件不可写!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            catch (Exception err)
            {
                postStream.Close();
                fs.Dispose();
                MessageBox.Show("上传文件异常!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                throw err;
            }
            finally
            {
                postStream.Close();
                fs.Dispose();
            }
        }
这是我的代码
我的服务器和客户端用同一个软件,只是服务器 上有数据库,客户端没有,客户端通过IP地址链接服务器上的数据库。服务器上的软件一直开启接收模块的数据,存入数据库中。
我现在用的uriString是本地的"D:\\机组状态列表",如果我要用服务器的"D:\\机组状态列表",",uriString应该怎么赋值??????????
服务器上的"D:\\机组状态列表"中的word,Excel等文件怎么打开,怎么删除。

17 个解决方案

#1


服务器建共享目录
uriString="\\服务器IP\机组状态列表"
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

#2


引用 1 楼 feiyun0112 的回复:
服务器建共享目录
uriString="\\服务器IP\机组状态列表"
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

+1

#3


晕死。你的 uriString 不过是文件路径。如果你可以直接“用服务器上的uriString”,你写这个程序是为了什么呢?

编写程序时不先搞清楚为什么需要写这个程序,实际工作事就会经常给出雷人的设计来。

#4


引用 1 楼 feiyun0112 的回复:
服务器建共享目录
uriString="\\服务器IP\机组状态列表"
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

我用的是uriString="\\192.168.0.184\\D:\\机组状态列表";
报路径错误,机组状态列表文件夹已经共享
winform 上传文件到服务器上;删除,打开服务器上的文件

#5


应该是
\\192.168.0.184\\机组状态列表

你用资源管理器访问看看

#6


引用 5 楼 feiyun0112 的回复:
应该是
\\192.168.0.184\\机组状态列表

你用资源管理器访问看看

现在能够继续运行,但是就是没有上传到文件夹中,可我这边又显示上传成功。是不是因为没有机组状态列表中没有创建文件啊!
比如我上传一个文件[测试用例ID明细0723_20131021.xlsx],而机组状态列表文件夹中是没有测试用例ID明细0723_20131021.xlsx文件的。
uriString就变成了\192.168.0.184\机组状态列表/测试用例ID明细0723_20131021.xlsx

#7


你没往里面写呀,只是判断能不能写?
  if (postStream.CanWrite)
                {
                     MessageBox.Show("上传文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
                                       
                    postStream.Close();
                    fs.Dispose();
                 }

#8


wo

引用 7 楼 feiyun0112 的回复:
你没往里面写呀,只是判断能不能写?
  if (postStream.CanWrite)
                {
                     MessageBox.Show("上传文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
                                       
                    postStream.Close();
                    fs.Dispose();
                 }

我在程序里写了的,是发帖的时候拷贝代码,要删除一些东西,就把删除了
 postStream.Write(postArray, 0, postArray.Length);

#9


File.Copy(fileNamePath,@"\192.168.0.184\机组状态列表");

#10


引用 9 楼 feiyun0112 的回复:
File.Copy(fileNamePath,@"\192.168.0.184\机组状态列表");
还是不行。说\192.168.0.184\机组状态列表/测试用例ID明细0723_20131021.xlsx 这个文件已经存在,可是根本就没有啊!

#11


你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

#12


我在192.168.0.184\机组状态列表 里面新建一个文件,再上传一个文件名相同的文件,也没有覆盖新建的文件。应该不需要File.Copy这个

#13


引用 11 楼 feiyun0112 的回复:
你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

地址弄对了的。资源管理器怎么访问啊?

#14


引用 13 楼 chenrong980 的回复:
Quote: 引用 11 楼 feiyun0112 的回复:

你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

地址弄对了的。资源管理器怎么访问啊?

左下角开始上点右键

#15


引用 14 楼 yuwenge 的回复:
Quote: 引用 13 楼 chenrong980 的回复:

Quote: 引用 11 楼 feiyun0112 的回复:

你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

地址弄对了的。资源管理器怎么访问啊?

左下角开始上点右键

在这里面有,可是在IP地址为192.168.0.184的机子上没有
winform 上传文件到服务器上;删除,打开服务器上的文件

#16


地址用错了,开头是双斜杠
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表"); 

#17


引用 16 楼 feiyun0112 的回复:
地址用错了,开头是双斜杠
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表"); 

我用的是这个postStream.Write(postArray, 0, postArray.Length); 
不是用这个File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");  
我的是双斜杠

#1


服务器建共享目录
uriString="\\服务器IP\机组状态列表"
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

#2


引用 1 楼 feiyun0112 的回复:
服务器建共享目录
uriString="\\服务器IP\机组状态列表"
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

+1

#3


晕死。你的 uriString 不过是文件路径。如果你可以直接“用服务器上的uriString”,你写这个程序是为了什么呢?

编写程序时不先搞清楚为什么需要写这个程序,实际工作事就会经常给出雷人的设计来。

#4


引用 1 楼 feiyun0112 的回复:
服务器建共享目录
uriString="\\服务器IP\机组状态列表"
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

我用的是uriString="\\192.168.0.184\\D:\\机组状态列表";
报路径错误,机组状态列表文件夹已经共享
winform 上传文件到服务器上;删除,打开服务器上的文件

#5


应该是
\\192.168.0.184\\机组状态列表

你用资源管理器访问看看

#6


引用 5 楼 feiyun0112 的回复:
应该是
\\192.168.0.184\\机组状态列表

你用资源管理器访问看看

现在能够继续运行,但是就是没有上传到文件夹中,可我这边又显示上传成功。是不是因为没有机组状态列表中没有创建文件啊!
比如我上传一个文件[测试用例ID明细0723_20131021.xlsx],而机组状态列表文件夹中是没有测试用例ID明细0723_20131021.xlsx文件的。
uriString就变成了\192.168.0.184\机组状态列表/测试用例ID明细0723_20131021.xlsx

#7


你没往里面写呀,只是判断能不能写?
  if (postStream.CanWrite)
                {
                     MessageBox.Show("上传文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
                                       
                    postStream.Close();
                    fs.Dispose();
                 }

#8


wo

引用 7 楼 feiyun0112 的回复:
你没往里面写呀,只是判断能不能写?
  if (postStream.CanWrite)
                {
                     MessageBox.Show("上传文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
                                       
                    postStream.Close();
                    fs.Dispose();
                 }

我在程序里写了的,是发帖的时候拷贝代码,要删除一些东西,就把删除了
 postStream.Write(postArray, 0, postArray.Length);

#9


File.Copy(fileNamePath,@"\192.168.0.184\机组状态列表");

#10


引用 9 楼 feiyun0112 的回复:
File.Copy(fileNamePath,@"\192.168.0.184\机组状态列表");
还是不行。说\192.168.0.184\机组状态列表/测试用例ID明细0723_20131021.xlsx 这个文件已经存在,可是根本就没有啊!

#11


你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

#12


我在192.168.0.184\机组状态列表 里面新建一个文件,再上传一个文件名相同的文件,也没有覆盖新建的文件。应该不需要File.Copy这个

#13


引用 11 楼 feiyun0112 的回复:
你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

地址弄对了的。资源管理器怎么访问啊?

#14


引用 13 楼 chenrong980 的回复:
Quote: 引用 11 楼 feiyun0112 的回复:

你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

地址弄对了的。资源管理器怎么访问啊?

左下角开始上点右键

#15


引用 14 楼 yuwenge 的回复:
Quote: 引用 13 楼 chenrong980 的回复:

Quote: 引用 11 楼 feiyun0112 的回复:

你用资源管理器访问看看,而且地址应该是

\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx

地址弄对了的。资源管理器怎么访问啊?

左下角开始上点右键

在这里面有,可是在IP地址为192.168.0.184的机子上没有
winform 上传文件到服务器上;删除,打开服务器上的文件

#16


地址用错了,开头是双斜杠
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表"); 

#17


引用 16 楼 feiyun0112 的回复:
地址用错了,开头是双斜杠
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表"); 

我用的是这个postStream.Write(postArray, 0, postArray.Length); 
不是用这个File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");  
我的是双斜杠