C/S 客户端上传文件到服务器

时间:2022-08-28 22:19:30
     想做C/S一个客户端文件上传到服务器端的代码、实现的思路。谢谢。 QQ 277385502

8 个解决方案

#1


用FTP或HTTP控件

#2


自己封装一个控件

#3


可以用Socket

#4


UP
引用 1 楼 lijun84 的回复:
用FTP或HTTP控件

#5


FTP  上传,麻烦给为给你示例,谢谢

#6


上传到哪里的服务器啊,是Web服务器还是FTP的呢?
这些论坛上都有的哦~~,友情UP
[align=center]********************************************************
欢迎使用  CSDN 小秘书
每天回帖即可获得10分可用分!
********************************************************
[/align]

#7


File.Copy(SourceFileAddress,DestinationFileFtpAddress);
就是这么简单... ...

C/S上传FTP,就等于直接COPY

引用 5 楼 junyao100 的回复:
FTP  上传,麻烦给为给你示例,谢谢

#8


 [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class CUSService : System.Web.Services.WebService
    {
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="image">图片数组</param>
        /// <param name="imageName">图片名称</param>
        /// <param name="IsAutoRename">是否启用自己创建图片名称</param>
        /// <param name="IsCreateCatalog">是否启用创建相应目录</param>
        /// <returns>返回图片的路径,1表示创建文件错误</returns>
        [WebMethod]
        public string UpImage(byte [] file, string imageName, bool IsAutoRename, bool IsCreateCatalog,string type)
        {
            string catalog = HttpContext.Current.Server.MapPath("/UploadFile/" + type+"/");
            if (IsCreateCatalog)
            {
                catalog += DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MM") + "/" + DateTime.Now.ToString("dd");
               if (!Directory.Exists(catalog))
                {
                   Directory.CreateDirectory(catalog);
                }
            }
            string allImageName = "";
            if (File.Exists(allImageName = catalog + "/" + imageName))
            {
                int nameid = 1;
                string [] tempName = imageName.Split('.');
              while (File.Exists(allImageName = catalog + "/" + tempName[0] + nameid + "." + tempName[1]))
              {
                   nameid++;
               }
                imageName = tempName[0] + nameid + "." + tempName[1];
           }
           //创建文件
         FileStream fs = null;

           MemoryStream ms = new MemoryStream(file);
            try
          {
                fs = new FileStream(allImageName, FileMode.Create, FileAccess.Write);
            }catch(Exception)
           {
               ms.Close();
               fs.Close();
                return "1";
            }
         ms.WriteTo(fs);
            ms.Close();
           fs.Close();

            return  catalog.Remove(0,catalog.LastIndexOf("UploadFile")-1) +"\\"+ imageName;
       }
把这个WebService发布到文件要上传的服务器上,在C/S客户端引用调用这个方法就ok了

#1


用FTP或HTTP控件

#2


自己封装一个控件

#3


可以用Socket

#4


UP
引用 1 楼 lijun84 的回复:
用FTP或HTTP控件

#5


FTP  上传,麻烦给为给你示例,谢谢

#6


上传到哪里的服务器啊,是Web服务器还是FTP的呢?
这些论坛上都有的哦~~,友情UP
[align=center]********************************************************
欢迎使用  CSDN 小秘书
每天回帖即可获得10分可用分!
********************************************************
[/align]

#7


File.Copy(SourceFileAddress,DestinationFileFtpAddress);
就是这么简单... ...

C/S上传FTP,就等于直接COPY

引用 5 楼 junyao100 的回复:
FTP  上传,麻烦给为给你示例,谢谢

#8


 [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class CUSService : System.Web.Services.WebService
    {
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="image">图片数组</param>
        /// <param name="imageName">图片名称</param>
        /// <param name="IsAutoRename">是否启用自己创建图片名称</param>
        /// <param name="IsCreateCatalog">是否启用创建相应目录</param>
        /// <returns>返回图片的路径,1表示创建文件错误</returns>
        [WebMethod]
        public string UpImage(byte [] file, string imageName, bool IsAutoRename, bool IsCreateCatalog,string type)
        {
            string catalog = HttpContext.Current.Server.MapPath("/UploadFile/" + type+"/");
            if (IsCreateCatalog)
            {
                catalog += DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MM") + "/" + DateTime.Now.ToString("dd");
               if (!Directory.Exists(catalog))
                {
                   Directory.CreateDirectory(catalog);
                }
            }
            string allImageName = "";
            if (File.Exists(allImageName = catalog + "/" + imageName))
            {
                int nameid = 1;
                string [] tempName = imageName.Split('.');
              while (File.Exists(allImageName = catalog + "/" + tempName[0] + nameid + "." + tempName[1]))
              {
                   nameid++;
               }
                imageName = tempName[0] + nameid + "." + tempName[1];
           }
           //创建文件
         FileStream fs = null;

           MemoryStream ms = new MemoryStream(file);
            try
          {
                fs = new FileStream(allImageName, FileMode.Create, FileAccess.Write);
            }catch(Exception)
           {
               ms.Close();
               fs.Close();
                return "1";
            }
         ms.WriteTo(fs);
            ms.Close();
           fs.Close();

            return  catalog.Remove(0,catalog.LastIndexOf("UploadFile")-1) +"\\"+ imageName;
       }
把这个WebService发布到文件要上传的服务器上,在C/S客户端引用调用这个方法就ok了