// 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/
uriString="\\服务器IP\机组状态列表"
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
#2
+1
#3
晕死。你的 uriString 不过是文件路径。如果你可以直接“用服务器上的uriString”,你写这个程序是为了什么呢?
编写程序时不先搞清楚为什么需要写这个程序,实际工作事就会经常给出雷人的设计来。
编写程序时不先搞清楚为什么需要写这个程序,实际工作事就会经常给出雷人的设计来。
#4
我用的是uriString="\\192.168.0.184\\D:\\机组状态列表";
报路径错误,机组状态列表文件夹已经共享
#5
应该是
\\192.168.0.184\\机组状态列表
你用资源管理器访问看看
\\192.168.0.184\\机组状态列表
你用资源管理器访问看看
#6
现在能够继续运行,但是就是没有上传到文件夹中,可我这边又显示上传成功。是不是因为没有机组状态列表中没有创建文件啊!
比如我上传一个文件[测试用例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();
}
if (postStream.CanWrite)
{
MessageBox.Show("上传文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
postStream.Close();
fs.Dispose();
}
#8
wo
我在程序里写了的,是发帖的时候拷贝代码,要删除一些东西,就把删除了
postStream.Write(postArray, 0, postArray.Length);
我在程序里写了的,是发帖的时候拷贝代码,要删除一些东西,就把删除了
postStream.Write(postArray, 0, postArray.Length);
#9
File.Copy(fileNamePath,@"\192.168.0.184\机组状态列表");
#10
还是不行。说\192.168.0.184\机组状态列表/测试用例ID明细0723_20131021.xlsx 这个文件已经存在,可是根本就没有啊!
#11
你用资源管理器访问看看,而且地址应该是
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
#12
我在192.168.0.184\机组状态列表 里面新建一个文件,再上传一个文件名相同的文件,也没有覆盖新建的文件。应该不需要File.Copy这个
#13
地址弄对了的。资源管理器怎么访问啊?
#14
左下角开始上点右键
#15
你用资源管理器访问看看,而且地址应该是
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
地址弄对了的。资源管理器怎么访问啊?
左下角开始上点右键
在这里面有,可是在IP地址为192.168.0.184的机子上没有
#16
地址用错了,开头是双斜杠
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");
#17
地址用错了,开头是双斜杠
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/
uriString="\\服务器IP\机组状态列表"
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
#2
服务器建共享目录
uriString="\\服务器IP\机组状态列表"
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
+1
#3
晕死。你的 uriString 不过是文件路径。如果你可以直接“用服务器上的uriString”,你写这个程序是为了什么呢?
编写程序时不先搞清楚为什么需要写这个程序,实际工作事就会经常给出雷人的设计来。
编写程序时不先搞清楚为什么需要写这个程序,实际工作事就会经常给出雷人的设计来。
#4
服务器建共享目录
uriString="\\服务器IP\机组状态列表"
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
我用的是uriString="\\192.168.0.184\\D:\\机组状态列表";
报路径错误,机组状态列表文件夹已经共享
#5
应该是
\\192.168.0.184\\机组状态列表
你用资源管理器访问看看
\\192.168.0.184\\机组状态列表
你用资源管理器访问看看
#6
应该是
\\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();
}
if (postStream.CanWrite)
{
MessageBox.Show("上传文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
postStream.Close();
fs.Dispose();
}
#8
wo
我在程序里写了的,是发帖的时候拷贝代码,要删除一些东西,就把删除了
postStream.Write(postArray, 0, postArray.Length);
你没往里面写呀,只是判断能不能写?
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
File.Copy(fileNamePath,@"\192.168.0.184\机组状态列表");
#11
你用资源管理器访问看看,而且地址应该是
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
#12
我在192.168.0.184\机组状态列表 里面新建一个文件,再上传一个文件名相同的文件,也没有覆盖新建的文件。应该不需要File.Copy这个
#13
你用资源管理器访问看看,而且地址应该是
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
地址弄对了的。资源管理器怎么访问啊?
#14
你用资源管理器访问看看,而且地址应该是
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
地址弄对了的。资源管理器怎么访问啊?
左下角开始上点右键
#15
你用资源管理器访问看看,而且地址应该是
\\192.168.0.184\机组状态列表\测试用例ID明细0723_20131021.xlsx
地址弄对了的。资源管理器怎么访问啊?
左下角开始上点右键
在这里面有,可是在IP地址为192.168.0.184的机子上没有
#16
地址用错了,开头是双斜杠
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");
#17
地址用错了,开头是双斜杠
File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");
我用的是这个postStream.Write(postArray, 0, postArray.Length);
不是用这个File.Copy(fileNamePath,@"\\192.168.0.184\机组状态列表");
我的是双斜杠