如何在c#中把图片上传到服务器? 一直都没有找到能用得类和方法啊因为是需要查询得时候能同时得到对应产品的图纸和验收报告,请高手告知如何上传?如果不是图片而是其他格式的文件也是一样的操作方法么?散50分出来求谢谢了,boss催的紧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 另外补充一下是一个sc系统 不是bs 能不能不通过asp实现?? winapp?上传的方式如何,如果是网络共享,你可以在连接之后,直接用file.copy即可;如果是其他方式,例如Ftp,你可以去找一个别人写好的com来使用。webapp?可以使用FileInput来操作,操作细节参看http://blog.csdn.net/knight94/archive/2006/03/31/646252.aspx 楼上大哥是winapp的程序后面连的一个sqlserver,现在就是不知道如何下手啊望指点.直接建立sqlconnection以后做file.copy操作?能够这样么? 数据库里面也就是几张tables 没有其他的结构了 /// <summary> /// WebClient上传文件至服务器 /// </summary> /// <param name="fileNamePath">文件名,全路径格式</param> /// <param name="uriString">服务器文件夹路径</param> private void UpLoadFile(string fileNamePath,string uriString) { string fileName = fileNamePath.Substring(fileNamePath.LastIndexOf("\\") + 1); NewFileName = DateTime.Now.ToString("yyMMddhhmmss") + DateTime.Now.Millisecond.ToString() + fileNamePath.Substring(fileNamePath.LastIndexOf(".")); string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1); if(uriString.EndsWith("/") == false) uriString = uriString + "/"; uriString = uriString + NewFileName; /// 创建WebClient实例 WebClient myWebClient = new WebClient(); myWebClient.Credentials = CredentialCache.DefaultCredentials; // 要上传的文件 FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); //FileStream fs = OpenFile(); BinaryReader r = new BinaryReader(fs); try { //使用UploadFile方法可以用下面的格式 //myWebClient.UploadFile(uriString,"PUT",fileNamePath); byte[] postArray = r.ReadBytes((int)fs.Length); Stream postStream = myWebClient.OpenWrite(uriString,"PUT"); if(postStream.CanWrite) { postStream.Write(postArray,0,postArray.Length); } else { AppHelper.MessageService.ShowError("文件目前不可写!"); } postStream.Close(); } catch { AppHelper.MessageService.ShowError("文件上传失败,请稍候重试~"); } } /// <summary> /// 下载服务器文件至客户端 /// </summary> /// <param name="URL">被下载的文件地址,绝对路径</param> /// <param name="Dir">另存放的目录</param> public void Download(string URL,string Dir) { WebClient client = new WebClient(); string fileName = URL.Substring(URL.LastIndexOf("\\") + 1); //被下载的文件名 string Path = Dir+fileName; //另存为的绝对路径+文件名 try { WebRequest myre=WebRequest.Create(URL); } catch(WebException exp) { MessageBox.Show(exp.Message,"Error"); } try { client.DownloadFile(URL,fileName); FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); byte[] mbyte = r.ReadBytes((int)fs.Length); FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write); fstr.Write(mbyte,0,(int)fs.Length); fstr.Close(); } catch(WebException exp) { MessageBox.Show(exp.Message,"Error"); } } ------------------我现在用的需要在服务器上设置web共享和写入权限 看看这个可以不?-------------------------using System;namespace UpFile{ /// <summary> /// upfile 的摘要说明。 /// </summary> public class upfile { private string path = null; private string fileType = null; private int sizes = 0; /// <summary> /// 初始化变量 /// </summary> public upfile() { path = @"\uploadimages\"; //上传路径 fileType = "jpg|gif|bmp"; sizes = 200; //传文件的大小,默认200KB } /// <summary> /// 设置上传路径,如:uploadimages\ /// </summary> public string Path { set { path = @"\" + value + @"\"; } } /// <summary> /// 设置上传文件大小,单位为KB /// </summary> public int Sizes { set { sizes = value * 1024; } } /// <summary> /// 设置上传文件的类型,如:jpg|gif|bmp /// </summary> public string FileType { set { fileType = value; } } /// <summary> /// 上传图片 /// </summary> /// <param name="name">上传控件名称</param> /// <param name="creatDirectory">true则以当前时间创建文件夹,false则为设置的文件夹</param> /// <returns>返回上传图片的相对路径</returns> public string fileSaveAs(System.Web.UI.HtmlControls.HtmlInputFile name,bool creatDirectory) { try { string filePath=null; //以当前时间修改图片的名字或创建文件夹的名字 string modifyFileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString(); //获得站点的物理路径 string uploadFilePath = null; //如果为true则以当前时间创建文件夹,否则为设置的文件夹 if(creatDirectory) { uploadFilePath = System.Web.HttpContext.Current.Server.MapPath(".") + @"\" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + @"\"; } else { uploadFilePath = System.Web.HttpContext.Current.Server.MapPath(".") + path; } //获得文件的上传的路径 string sourcePath=name.Value.Trim(); //判断上传文件是否为空 if(sourcePath == "" || sourcePath == null) { message("您没有上传数据呀,是不是搞错了呀!"); return null; } //获得文件扩展名 string tFileType = sourcePath.Substring(sourcePath.LastIndexOf(".")+1); //获得上传文件的大小 long strLen = name.PostedFile.ContentLength; //分解允许上传文件的格式 string[] temp = fileType.Split('|'); //设置上传的文件是否是允许的格式 bool flag = false; //判断上传文件大小 if(strLen >= sizes) { message("上传的图片不能大于" + sizes + "KB"); return null; } //判断上传的文件是否是允许的格式 foreach(string data in temp) { if(data == tFileType) { flag = true ; break; } } //如果为真允许上传,为假则不允许上传 if(!flag) { message("目前本系统支持的格式为:"+fileType); return null; } System.IO.DirectoryInfo dir=new System.IO.DirectoryInfo(uploadFilePath); //判断文件夹否存在,不存在则创建 if(!dir.Exists) { dir.Create(); } filePath = uploadFilePath + modifyFileName + "." + tFileType; name.PostedFile.SaveAs(filePath); filePath = path + modifyFileName + "." + tFileType; return filePath; } catch { //异常 message("出现未知错误!"); return null; } } private void message(string msg,string url) { System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('"+msg+"');window.location='"+url+"'</script>"); } private void message(string msg) { System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('"+msg+"');</script>"); } }} create table( id int identity(1,1), filename varchar(20) unique, fileattached varchar(20) unique, -----如果多个附件可以通过分隔符将他们分割与组合如: c:\\a.txt;c:\\b.txt; primarykey(id))这样就解决了文件附加问题了至于怎么上传就更简单了,html就有上传控件 <INPUT id="UpPhoto" type="file" >在asp.net中只要加runat = server 就可以在服务器端调用了<INPUT id="UpPhoto" type="file" runat="server">处理时string sourceImagePath = this.UpPhoto.PostedFile.FileName ;//获得上传文件名UpPhoto.PostedFile.SaveAs(savepath); //保存文件到服务器 存在数据库,可以参看http://blog.csdn.net/knight94/archive/2006/03/24/637800.aspx AppHelper.MessageService.ShowError("...");呵呵,这是??蠢猪! 如果 存在数据库就好解决了但是 要是 存在 文件目录中 建议 最好 使用webservice这样 不需要考虑 权限的问题通过调用webservice的Upload方法 来上传文件 楼主需要 我可以给你发个 使用webservice 的类 和 demo或是看http://blog.csdn.net/jetxia/archive/2006/04/23/673981.aspx 跪求指点 CKEditor.NET 3.6.2 实现上传视频功能 webbrowser控件编程中如何得到iframe 元素本身在 webbrowser 中的坐标? 求一个循环遍历高效算法 【一个基本的问题,这样的属性怎么访问到?】 问个有关编译的问题 怎么判断一个Exe文件是不是用 .net 编写的 这种类型的TreeView怎么做? 安装Microsoft SQL Server 2005 Express失败,帮我解决下呀,急! 各位高手?一个严重的问题?谢谢解答!! 如何在DataGrid中按下回车就象按下tab一下? 超简单问题,关于数组的使用! 关于c#遍历节点时定位某一节点的问题
上传的方式如何,如果是网络共享,你可以在连接之后,直接用file.copy即可;
如果是其他方式,例如Ftp,你可以去找一个别人写好的com来使用。webapp?
可以使用FileInput来操作,操作细节参看
http://blog.csdn.net/knight94/archive/2006/03/31/646252.aspx
后面连的一个sqlserver,现在就是不知道如何下手啊望指点.直接建立sqlconnection以后做file.copy操作?
能够这样么?
/// WebClient上传文件至服务器
/// </summary>
/// <param name="fileNamePath">文件名,全路径格式</param>
/// <param name="uriString">服务器文件夹路径</param>
private void UpLoadFile(string fileNamePath,string uriString)
{
string fileName = fileNamePath.Substring(fileNamePath.LastIndexOf("\\") + 1);
NewFileName = DateTime.Now.ToString("yyMMddhhmmss") + DateTime.Now.Millisecond.ToString() + fileNamePath.Substring(fileNamePath.LastIndexOf(".")); string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
if(uriString.EndsWith("/") == false) uriString = uriString + "/"; uriString = uriString + NewFileName;
/// 创建WebClient实例
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials; // 要上传的文件
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
//FileStream fs = OpenFile();
BinaryReader r = new BinaryReader(fs);
try
{
//使用UploadFile方法可以用下面的格式
//myWebClient.UploadFile(uriString,"PUT",fileNamePath);
byte[] postArray = r.ReadBytes((int)fs.Length);
Stream postStream = myWebClient.OpenWrite(uriString,"PUT");
if(postStream.CanWrite)
{
postStream.Write(postArray,0,postArray.Length);
}
else
{
AppHelper.MessageService.ShowError("文件目前不可写!");
}
postStream.Close();
}
catch
{
AppHelper.MessageService.ShowError("文件上传失败,请稍候重试~");
}
}
/// <summary>
/// 下载服务器文件至客户端 /// </summary>
/// <param name="URL">被下载的文件地址,绝对路径</param>
/// <param name="Dir">另存放的目录</param>
public void Download(string URL,string Dir)
{
WebClient client = new WebClient();
string fileName = URL.Substring(URL.LastIndexOf("\\") + 1); //被下载的文件名 string Path = Dir+fileName; //另存为的绝对路径+文件名
try
{
WebRequest myre=WebRequest.Create(URL);
}
catch(WebException exp)
{
MessageBox.Show(exp.Message,"Error");
}
try
{
client.DownloadFile(URL,fileName);
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
byte[] mbyte = r.ReadBytes((int)fs.Length);
FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write); fstr.Write(mbyte,0,(int)fs.Length);
fstr.Close(); }
catch(WebException exp)
{
MessageBox.Show(exp.Message,"Error");
}
}
------------------
我现在用的
需要在服务器上设置web共享和写入权限
-------------------------using System;namespace UpFile
{
/// <summary>
/// upfile 的摘要说明。
/// </summary>
public class upfile
{
private string path = null;
private string fileType = null;
private int sizes = 0;
/// <summary>
/// 初始化变量
/// </summary>
public upfile()
{
path = @"\uploadimages\"; //上传路径
fileType = "jpg|gif|bmp";
sizes = 200; //传文件的大小,默认200KB
} /// <summary>
/// 设置上传路径,如:uploadimages\
/// </summary>
public string Path
{
set
{
path = @"\" + value + @"\";
}
} /// <summary>
/// 设置上传文件大小,单位为KB
/// </summary>
public int Sizes
{
set
{
sizes = value * 1024;
}
} /// <summary>
/// 设置上传文件的类型,如:jpg|gif|bmp
/// </summary>
public string FileType
{
set
{
fileType = value;
}
} /// <summary>
/// 上传图片
/// </summary>
/// <param name="name">上传控件名称</param>
/// <param name="creatDirectory">true则以当前时间创建文件夹,false则为设置的文件夹</param>
/// <returns>返回上传图片的相对路径</returns>
public string fileSaveAs(System.Web.UI.HtmlControls.HtmlInputFile name,bool creatDirectory)
{
try
{
string filePath=null;
//以当前时间修改图片的名字或创建文件夹的名字
string modifyFileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
//获得站点的物理路径
string uploadFilePath = null;
//如果为true则以当前时间创建文件夹,否则为设置的文件夹
if(creatDirectory)
{
uploadFilePath = System.Web.HttpContext.Current.Server.MapPath(".") + @"\" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + @"\";
}
else
{
uploadFilePath = System.Web.HttpContext.Current.Server.MapPath(".") + path;
}
//获得文件的上传的路径
string sourcePath=name.Value.Trim();
//判断上传文件是否为空
if(sourcePath == "" || sourcePath == null)
{
message("您没有上传数据呀,是不是搞错了呀!");
return null;
}
//获得文件扩展名
string tFileType = sourcePath.Substring(sourcePath.LastIndexOf(".")+1);
//获得上传文件的大小
long strLen = name.PostedFile.ContentLength;
//分解允许上传文件的格式
string[] temp = fileType.Split('|');
//设置上传的文件是否是允许的格式
bool flag = false;
//判断上传文件大小
if(strLen >= sizes)
{
message("上传的图片不能大于" + sizes + "KB");
return null;
}
//判断上传的文件是否是允许的格式
foreach(string data in temp)
{
if(data == tFileType)
{
flag = true ;
break;
}
}
//如果为真允许上传,为假则不允许上传
if(!flag)
{
message("目前本系统支持的格式为:"+fileType);
return null;
}
System.IO.DirectoryInfo dir=new System.IO.DirectoryInfo(uploadFilePath);
//判断文件夹否存在,不存在则创建
if(!dir.Exists)
{
dir.Create();
}
filePath = uploadFilePath + modifyFileName + "." + tFileType;
name.PostedFile.SaveAs(filePath);
filePath = path + modifyFileName + "." + tFileType; return filePath; }
catch
{
//异常
message("出现未知错误!");
return null;
}
} private void message(string msg,string url)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('"+msg+"');window.location='"+url+"'</script>");
} private void message(string msg)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('"+msg+"');</script>");
}
}
}
(
id int identity(1,1),
filename varchar(20) unique,
fileattached varchar(20) unique, -----如果多个附件可以通过分隔符将他们分割与组合如: c:\\a.txt;c:\\b.txt;
primarykey(id)
)
这样就解决了文件附加问题了至于怎么上传就更简单了,html就有上传控件 <INPUT id="UpPhoto" type="file" >
在asp.net中只要加runat = server 就可以在服务器端调用了
<INPUT id="UpPhoto" type="file" runat="server">
处理时
string sourceImagePath = this.UpPhoto.PostedFile.FileName ;//获得上传文件名
UpPhoto.PostedFile.SaveAs(savepath); //保存文件到服务器
http://blog.csdn.net/knight94/archive/2006/03/24/637800.aspx
呵呵,这是??蠢猪!
但是 要是 存在 文件目录中 建议 最好 使用webservice
这样 不需要考虑 权限的问题
通过调用webservice的Upload方法 来上传文件
楼主需要 我可以给你发个 使用webservice 的类 和 demo
或是看
http://blog.csdn.net/jetxia/archive/2006/04/23/673981.aspx