/// 检测指定的文件夹是否存在,不存在就创建
/// </summary>
/// <param name="imgpath">该文件夹的之前的路径,注意一定要带上"/"</param>
/// <returns></returns>
public static string CheckFile(string imgpath)
{
//命名一个今天的文件夹
string folder = DateTime.Now.ToString("yyyyMMdd");
//判断文件是否存在
if (!System.IO.Directory.Exists("uploadpic/images/" + folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory("uploadpic/images/" + folder);
//生成后返回文件夹名
return "uploadpic/images/" + folder;
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + folder;
}
/// <summary>
/// 上传图片
/// </summary>
/// <param name="FileUpload1">上传控件</param>
/// <param name="i">图片ID</param>
/// <returns></returns>
public static string uploadpic(FileUpload FileUpload1, int i)
{
string filetype = FileUpload1.PostedFile.ContentType;
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 0)
{
return "0";
}
if (filesize > 1000000)
{
return "00";
}
if (filetype != "image/pjpeg" && filetype != "image/jpeg" && filetype != "image/jpg" && filetype != "image/peg" && filetype != "image/gif" && filetype != "image/x-png" && filetype != "application/x-shockwave-flash")
{
return "000000";
}
string fname = FileUpload1.PostedFile.FileName;
//获取图片的后缀名
fname = fname.Substring(fname.IndexOf('.'), fname.Length - fname.IndexOf('.'));
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + ".jpg";
//指定上一级路径
//string path1 = System.Web.HttpContext.Current.Server.MapPath("/uploadpic/images/");
string path1 = "uploadpic/images/";
//调用文件夹检测方法,返回组合路径,且与图片组合成完整路径
path1 = CheckFile(path1) + "/" + fname;
//path1 = path1 + "/" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
// FileUpload1.SaveAs(path1);
return path1;
}
44 个解决方案
#1
遇到什么问题了?还是例子。。。
#2
你都必须使用Server.MapPath("uploadpic/images/" + folder)
转换成物理路径才可以的
转换成物理路径才可以的
#3
string path1 = "uploadpic/images/";
//调用文件夹检测方法,返回组合路径,且与图片组合成完整路径
path1 = CheckFile(path1) + "/" + fname;
你这参数传的不是重复了吗
//调用文件夹检测方法,返回组合路径,且与图片组合成完整路径
path1 = CheckFile(path1) + "/" + fname;
你这参数传的不是重复了吗
#4
public string CheckFile()
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = Server.MapPath("~/uploadpic/images/" + p + "/");
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
}
//生成后返回文件夹名
return "uploadpic/images/" + p ;
}
//保存代码
string fname = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + "." + fname;
String path1 = CheckFile() + "/" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("~/" + path1));
#5
4楼的大哥,你那个String path1 = CheckFile() + "/" + fname;“CheckFile”方法参数重载 呀!
#6
1楼的大哥我那个不是例子,而就是我现在上传图片写的一个封装类!我现在的问题是上传图片之后要保存在当天自动生成的文件夹里面!现在就是文件夹自动生成了,但是图片显示读取的路径不对!
#7
我需要保存到数据库中的路径是:uploadpic/images/20110922103209.jpg,读出来时的路径是:http://localhost:46193/uploadpic/images/20110922103209.jpg!这就是我要的效果,现在遇到的问题是保存到数据库中的路径成了这样:F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg!
读出来时变成了:http://localhost:46193/F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg
我现在要在我上面的代码里怎么修改去掉:F:/feng/Cgift/WebSite/这个呢?
读出来时变成了:http://localhost:46193/F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg
我现在要在我上面的代码里怎么修改去掉:F:/feng/Cgift/WebSite/这个呢?
#8
保存到数据库的是虚苡路径 上传的物理路径
img.ImageUrl=Server.MapPath(数据库路径)
而LZ你上传的路径也就是可以这个写../../xx/xx.jpg
img.ImageUrl=Server.MapPath(数据库路径)
而LZ你上传的路径也就是可以这个写../../xx/xx.jpg
#9
string fileName = "图片的绝对路径也就是http://localhost:46193.....";
fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1);
string path = Server.MapPath(@"/Images/Upload/" + fileName);//Images和Upload根据你的文件夹名来取名
img.ImageUrl=path;
fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1);
string path = Server.MapPath(@"/Images/Upload/" + fileName);//Images和Upload根据你的文件夹名来取名
img.ImageUrl=path;
#10
大哥们帮帮忙呀,还是没有解决掉呀!
#11
path1 = CheckFile(path1) + "/" + fname;
这个看你的程序应该不会返回物理路径的。
string path1 = System.Web.HttpContext.Current.Server.MapPath("/uploadpic/images/");
这样处理才会返回物理路径。
请看看代码是否是重新编译了,以及写出来的代码是不是和你想的一样。
这个看你的程序应该不会返回物理路径的。
string path1 = System.Web.HttpContext.Current.Server.MapPath("/uploadpic/images/");
这样处理才会返回物理路径。
请看看代码是否是重新编译了,以及写出来的代码是不是和你想的一样。
#12
LZ我给你的方法是对的
string fileName = "图片的绝对路径也就是http://localhost:46193.....";
fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1);//获取到xx.jpg LZ可以根据需要获取你需要的图片名字啊
string path = Server.MapPath(@"/Images/Upload/" + fileName);//Images和Upload根据你的文件夹名来取名
img.ImageUrl=path;
fileName就是你要保存到数据库的图片名字
上传的也是根据这个方式来的
#13
11楼的大哥你能根据我贴出来的代码在那上面给我作修改吗?我是个菜鸟不怎么懂,麻烦你,谢谢!我会加分的!
#14
你要分清楚前台绑定时是要相对路径virpath,并不是要的你通过Server.MapPath转换后的路径,把图片存到服务器的路径是要物理路径path1,也就是你现在存的F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg,因此你存到数据库中的路径应该是相对路径virpath,也就是你的"/uploadpic/images/+时间"
#15
14楼的大哥那你能根据我贴的代码给我改改吗?加分
#16
你方法参数重载什么啊。?参数不是给你去掉了吗
#17
去掉了就报错呀,没有采用0个方法重载
#18
其实就3句关键的语句
得到保存的物理地址
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = Server.MapPath("~/uploadpic/images/" + p + "/");
folder + 文件名就是了。
得到保存后的url地址
String url = Page.ResolveUrl("~/") + uploadpic/images/" + p + "/" + 文件名
得到保存的物理地址
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = Server.MapPath("~/uploadpic/images/" + p + "/");
folder + 文件名就是了。
得到保存后的url地址
String url = Page.ResolveUrl("~/") + uploadpic/images/" + p + "/" + 文件名
#19
public static string CheckFile()
定义了吗》
这里有参数吗
#20
获取当前时间,然后创建该文件夹,再传图片上去就O了!
#21
【孟子E章】大哥像你说的那样还是对的呀,我把代码贴给你看看
/// <summary>
/// 检测指定的文件夹是否存在,不存在就创建
/// </summary>
/// <param name="imgpath">该文件夹的之前的路径,注意一定要带上"/"</param>
/// <returns></returns>
public static string CheckFile()
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = System.Web.HttpContext.Current.Server.MapPath("/uploadpic/images/" + p);
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
//生成后返回文件夹名
return folder;
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p ;
}
/// <summary>
/// 上传图片
/// </summary>
/// <param name="FileUpload1">上传控件</param>
/// <param name="i">图片ID</param>
/// <returns></returns>
public static string uploadpic(FileUpload FileUpload1, int i)
{
string filetype = FileUpload1.PostedFile.ContentType;
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 0)
{
return "0";
}
if (filesize > 1000000)
{
return "00";
}
if (filetype != "image/pjpeg" && filetype != "image/jpeg" && filetype != "image/jpg" && filetype != "image/peg" && filetype != "image/gif" && filetype != "image/x-png" && filetype != "application/x-shockwave-flash")
{
return "000000";
}
string fname = FileUpload1.PostedFile.FileName;
//获取图片的后缀名
fname = fname.Substring(fname.IndexOf('.'), fname.Length - fname.IndexOf('.'));
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + ".jpg";
String path1 = CheckFile() + "\\" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/" + path1));
FileUpload1.SaveAs(path1);
return path1;
}
#22
【孟子E章】大哥你QQ多少?我加你
#23
你现在的问题是啥?
没有生成路径?
还是没有上传成功?
没有生成路径?
还是没有上传成功?
#24
你这2次返回的东西都不一样的,一个是物理路径,一个是虚拟路径
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
//生成后返回文件夹名
return folder;
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p ;
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
//生成后返回文件夹名
return folder;
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p ;
#25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///UploadfileUtil 的摘要说明
/// </summary>
public static class UploadfileUtil
{
public static string CheckFile()
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = System.Web.HttpContext.Current.Server.MapPath("~/uploadpic/images/" + p);
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
}
return "uploadpic/images/" + p + "/";
}
public static string uploadpic(System.Web.UI.WebControls.FileUpload FileUpload1, int i)
{
string filetype = FileUpload1.PostedFile.ContentType;
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 0)
{
return "0";
}
if (filesize > 1000000)
{
return "00";
}
if (filetype != "image/pjpeg" && filetype != "image/jpeg" && filetype != "image/jpg" && filetype != "image/peg" && filetype != "image/gif" && filetype != "image/x-png" && filetype != "application/x-shockwave-flash")
{
return "000000";
}
string fname = FileUpload1.PostedFile.FileName;
//获取图片的后缀名
if (System.IO.Path.HasExtension(fname))
{
fname = System.IO.Path.GetExtension(fname);
}
else
{
fname = "";
}
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + fname;
String path1 = CheckFile() + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("~/" + path1));
//返回完整的url
return VirtualPathUtility.ToAbsolute("~/") + path1;
}
}
调用
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
String p = UploadfileUtil.uploadpic(FileUpload1, 0);
if (p.StartsWith("/"))
Image1.ImageUrl =p;
else
{
//错误处理
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:Image ID="Image1" runat="server" />
</form>
</body>
</html>
#26
我现在遇到的问题就是上传是报错,报的错误是:F:\feng\Cgift\WebSite\uploadpic\images\20110929/20110929113459.jpg”不是有效的虚拟路径。
我是按照你给的代码来做的
我是按照你给的代码来做的
#27
拷贝我的类测试
#28
F:\feng\Cgift\WebSite\uploadpic\images\20110929/20110929113459.jpg
你的路径\/都有 啊
你的路径\/都有 啊
#29
我现在全是用的你给的,报的错误是:未能找到路径“F:\feng\Cgift\WebSite\admin\uploadpic\images\20110929\20110929114044.jpg”的一部分。
#30
F:\feng\Cgift\WebSite\admin\uploadpic\images
路径都存在吗?
我怎么测试是可以的啊?
#31
某些路径不存在吧
#32
现在代码是这样的
public static string CheckFile(),上传倒是成功了,就是前台读取图片路径时读出的是:http://uploadpic/images/20110929/20110929120838.jpg,我要加上本地的才会显示也就是这样的:http://localhost:15003/uploadpic/images/20110922103209.jpg
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = System.Web.HttpContext.Current.Server.MapPath("~/uploadpic/images/" + p);
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p + "/";
}
/// <summary>
/// 上传图片
/// </summary>
/// <param name="FileUpload1">上传控件</param>
/// <param name="i">图片ID</param>
/// <returns></returns>
public static string uploadpic(FileUpload FileUpload1, int i)
{
string filetype = FileUpload1.PostedFile.ContentType;
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 0)
{
return "0";
}
if (filesize > 1000000)
{
return "00";
}
if (filetype != "image/pjpeg" && filetype != "image/jpeg" && filetype != "image/jpg" && filetype != "image/peg" && filetype != "image/gif" && filetype != "image/x-png" && filetype != "application/x-shockwave-flash")
{
return "000000";
}
string fname = FileUpload1.PostedFile.FileName;
//获取图片的后缀名
fname = fname.Substring(fname.IndexOf('.'), fname.Length - fname.IndexOf('.'));
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + ".jpg";
string path1 = CheckFile() + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
//返回完整的url
return VirtualPathUtility.ToAbsolute("/" + path1);
}
#33
//返回完整的url
return VirtualPathUtility.ToAbsolute("~/") + path1;
代码里面不都是给你转好了吗?
不是让你拷贝测试的吗
return VirtualPathUtility.ToAbsolute("~/") + path1;
代码里面不都是给你转好了吗?
不是让你拷贝测试的吗
#34
你这样写
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
在虚拟目录下可能是错误的
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
在虚拟目录下可能是错误的
#35
我不想保存到数据库中的路径是:/uploadpic/images/20110929/20110929134503.jpg这样的,我要保存进去的是:uploadpic/images/20110929/20110929134503.jpg这样的,然后在读出来要这样的:http://localhost:15003/uploadpic/images/20110929/20110929134503.jpg
#36
我后台代码是:
前台代码是:
显示图片:
string pic = Cgift.Chinagift.zlw.uploadpic(FileUpload2, 1);
if (pic == "0")
{
pic = HiddenField3.Value.ToString().Trim();
}
_cpbs.picbig = pic;
前台代码是:
<tr>
<td class="style3" align="right">
商品大图:
</td>
<td>
<asp:FileUpload ID="FileUpload2" runat="server" />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:Image ID="Image2" runat="server" Height="50px" Width="50px" />
<asp:HiddenField ID="HiddenField3" runat="server" />
</td>
</tr>
显示图片:
<asp:TemplateField HeaderText="商品图片 " ShowHeader="False">
<ItemTemplate>
<img alt="" src="/<%# Eval("picbig") %>" height="50px" width="50px" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>
#37
<img alt="" src="/<%# Eval("picbig") %>"
这样显示是错误的。
你的程序放在虚拟目录下就是错误的了。
这样显示是错误的。
你的程序放在虚拟目录下就是错误的了。
#38
return VirtualPathUtility.ToAbsolute("~/") + path1;
改成
return path1;
就是
uploadpic/images/20110929/20110929134503.jpg
这样的
改成
return path1;
就是
uploadpic/images/20110929/20110929134503.jpg
这样的
#39
非常感谢,终于OK了!
#40
对了【孟子E章】大哥,如果我还想分细呢?就是按照月自动生成文件夹,再在月文件夹里面按照天自动生成文件夹保存呢?比如:201109/20110901/20110901134503.jpg,201109/20110902/20110902134503.jpg,这个怎么实现呀?有分给的!
#41
CreateDirectory的问题。
#42
path1 = CheckFile(path1) + "/" + fname;
//path1 = path1 + "/" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
// FileUpload1.SaveAs(path1);
return path1;
=======================================
Server.MapPath("/"+path1)); //这个知道是啥意思不?
你返回
return path1; //是啥意思。。知道不?
你应该返回
Server.MapPath("/"+path1));
//path1 = path1 + "/" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
// FileUpload1.SaveAs(path1);
return path1;
=======================================
Server.MapPath("/"+path1)); //这个知道是啥意思不?
你返回
return path1; //是啥意思。。知道不?
你应该返回
Server.MapPath("/"+path1));
#43
弄错了。。呵呵 。。
#44
学习了!
#1
遇到什么问题了?还是例子。。。
#2
你都必须使用Server.MapPath("uploadpic/images/" + folder)
转换成物理路径才可以的
转换成物理路径才可以的
#3
string path1 = "uploadpic/images/";
//调用文件夹检测方法,返回组合路径,且与图片组合成完整路径
path1 = CheckFile(path1) + "/" + fname;
你这参数传的不是重复了吗
//调用文件夹检测方法,返回组合路径,且与图片组合成完整路径
path1 = CheckFile(path1) + "/" + fname;
你这参数传的不是重复了吗
#4
public string CheckFile()
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = Server.MapPath("~/uploadpic/images/" + p + "/");
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
}
//生成后返回文件夹名
return "uploadpic/images/" + p ;
}
//保存代码
string fname = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + "." + fname;
String path1 = CheckFile() + "/" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("~/" + path1));
#5
4楼的大哥,你那个String path1 = CheckFile() + "/" + fname;“CheckFile”方法参数重载 呀!
#6
1楼的大哥我那个不是例子,而就是我现在上传图片写的一个封装类!我现在的问题是上传图片之后要保存在当天自动生成的文件夹里面!现在就是文件夹自动生成了,但是图片显示读取的路径不对!
#7
我需要保存到数据库中的路径是:uploadpic/images/20110922103209.jpg,读出来时的路径是:http://localhost:46193/uploadpic/images/20110922103209.jpg!这就是我要的效果,现在遇到的问题是保存到数据库中的路径成了这样:F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg!
读出来时变成了:http://localhost:46193/F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg
我现在要在我上面的代码里怎么修改去掉:F:/feng/Cgift/WebSite/这个呢?
读出来时变成了:http://localhost:46193/F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg
我现在要在我上面的代码里怎么修改去掉:F:/feng/Cgift/WebSite/这个呢?
#8
保存到数据库的是虚苡路径 上传的物理路径
img.ImageUrl=Server.MapPath(数据库路径)
而LZ你上传的路径也就是可以这个写../../xx/xx.jpg
img.ImageUrl=Server.MapPath(数据库路径)
而LZ你上传的路径也就是可以这个写../../xx/xx.jpg
#9
string fileName = "图片的绝对路径也就是http://localhost:46193.....";
fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1);
string path = Server.MapPath(@"/Images/Upload/" + fileName);//Images和Upload根据你的文件夹名来取名
img.ImageUrl=path;
fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1);
string path = Server.MapPath(@"/Images/Upload/" + fileName);//Images和Upload根据你的文件夹名来取名
img.ImageUrl=path;
#10
大哥们帮帮忙呀,还是没有解决掉呀!
#11
path1 = CheckFile(path1) + "/" + fname;
这个看你的程序应该不会返回物理路径的。
string path1 = System.Web.HttpContext.Current.Server.MapPath("/uploadpic/images/");
这样处理才会返回物理路径。
请看看代码是否是重新编译了,以及写出来的代码是不是和你想的一样。
这个看你的程序应该不会返回物理路径的。
string path1 = System.Web.HttpContext.Current.Server.MapPath("/uploadpic/images/");
这样处理才会返回物理路径。
请看看代码是否是重新编译了,以及写出来的代码是不是和你想的一样。
#12
LZ我给你的方法是对的
string fileName = "图片的绝对路径也就是http://localhost:46193.....";
fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1);//获取到xx.jpg LZ可以根据需要获取你需要的图片名字啊
string path = Server.MapPath(@"/Images/Upload/" + fileName);//Images和Upload根据你的文件夹名来取名
img.ImageUrl=path;
fileName就是你要保存到数据库的图片名字
上传的也是根据这个方式来的
#13
11楼的大哥你能根据我贴出来的代码在那上面给我作修改吗?我是个菜鸟不怎么懂,麻烦你,谢谢!我会加分的!
#14
你要分清楚前台绑定时是要相对路径virpath,并不是要的你通过Server.MapPath转换后的路径,把图片存到服务器的路径是要物理路径path1,也就是你现在存的F:/feng/Cgift/WebSite/uploadpic/images/20110929/20110929091116.jpg,因此你存到数据库中的路径应该是相对路径virpath,也就是你的"/uploadpic/images/+时间"
#15
14楼的大哥那你能根据我贴的代码给我改改吗?加分
#16
你方法参数重载什么啊。?参数不是给你去掉了吗
#17
去掉了就报错呀,没有采用0个方法重载
#18
其实就3句关键的语句
得到保存的物理地址
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = Server.MapPath("~/uploadpic/images/" + p + "/");
folder + 文件名就是了。
得到保存后的url地址
String url = Page.ResolveUrl("~/") + uploadpic/images/" + p + "/" + 文件名
得到保存的物理地址
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = Server.MapPath("~/uploadpic/images/" + p + "/");
folder + 文件名就是了。
得到保存后的url地址
String url = Page.ResolveUrl("~/") + uploadpic/images/" + p + "/" + 文件名
#19
public static string CheckFile()
定义了吗》
这里有参数吗
#20
获取当前时间,然后创建该文件夹,再传图片上去就O了!
#21
【孟子E章】大哥像你说的那样还是对的呀,我把代码贴给你看看
/// <summary>
/// 检测指定的文件夹是否存在,不存在就创建
/// </summary>
/// <param name="imgpath">该文件夹的之前的路径,注意一定要带上"/"</param>
/// <returns></returns>
public static string CheckFile()
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = System.Web.HttpContext.Current.Server.MapPath("/uploadpic/images/" + p);
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
//生成后返回文件夹名
return folder;
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p ;
}
/// <summary>
/// 上传图片
/// </summary>
/// <param name="FileUpload1">上传控件</param>
/// <param name="i">图片ID</param>
/// <returns></returns>
public static string uploadpic(FileUpload FileUpload1, int i)
{
string filetype = FileUpload1.PostedFile.ContentType;
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 0)
{
return "0";
}
if (filesize > 1000000)
{
return "00";
}
if (filetype != "image/pjpeg" && filetype != "image/jpeg" && filetype != "image/jpg" && filetype != "image/peg" && filetype != "image/gif" && filetype != "image/x-png" && filetype != "application/x-shockwave-flash")
{
return "000000";
}
string fname = FileUpload1.PostedFile.FileName;
//获取图片的后缀名
fname = fname.Substring(fname.IndexOf('.'), fname.Length - fname.IndexOf('.'));
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + ".jpg";
String path1 = CheckFile() + "\\" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/" + path1));
FileUpload1.SaveAs(path1);
return path1;
}
#22
【孟子E章】大哥你QQ多少?我加你
#23
你现在的问题是啥?
没有生成路径?
还是没有上传成功?
没有生成路径?
还是没有上传成功?
#24
你这2次返回的东西都不一样的,一个是物理路径,一个是虚拟路径
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
//生成后返回文件夹名
return folder;
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p ;
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
//生成后返回文件夹名
return folder;
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p ;
#25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///UploadfileUtil 的摘要说明
/// </summary>
public static class UploadfileUtil
{
public static string CheckFile()
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = System.Web.HttpContext.Current.Server.MapPath("~/uploadpic/images/" + p);
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
}
return "uploadpic/images/" + p + "/";
}
public static string uploadpic(System.Web.UI.WebControls.FileUpload FileUpload1, int i)
{
string filetype = FileUpload1.PostedFile.ContentType;
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 0)
{
return "0";
}
if (filesize > 1000000)
{
return "00";
}
if (filetype != "image/pjpeg" && filetype != "image/jpeg" && filetype != "image/jpg" && filetype != "image/peg" && filetype != "image/gif" && filetype != "image/x-png" && filetype != "application/x-shockwave-flash")
{
return "000000";
}
string fname = FileUpload1.PostedFile.FileName;
//获取图片的后缀名
if (System.IO.Path.HasExtension(fname))
{
fname = System.IO.Path.GetExtension(fname);
}
else
{
fname = "";
}
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + fname;
String path1 = CheckFile() + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("~/" + path1));
//返回完整的url
return VirtualPathUtility.ToAbsolute("~/") + path1;
}
}
调用
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
String p = UploadfileUtil.uploadpic(FileUpload1, 0);
if (p.StartsWith("/"))
Image1.ImageUrl =p;
else
{
//错误处理
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:Image ID="Image1" runat="server" />
</form>
</body>
</html>
#26
我现在遇到的问题就是上传是报错,报的错误是:F:\feng\Cgift\WebSite\uploadpic\images\20110929/20110929113459.jpg”不是有效的虚拟路径。
我是按照你给的代码来做的
我是按照你给的代码来做的
#27
拷贝我的类测试
#28
F:\feng\Cgift\WebSite\uploadpic\images\20110929/20110929113459.jpg
你的路径\/都有 啊
你的路径\/都有 啊
#29
我现在全是用的你给的,报的错误是:未能找到路径“F:\feng\Cgift\WebSite\admin\uploadpic\images\20110929\20110929114044.jpg”的一部分。
#30
F:\feng\Cgift\WebSite\admin\uploadpic\images
路径都存在吗?
我怎么测试是可以的啊?
#31
某些路径不存在吧
#32
现在代码是这样的
public static string CheckFile(),上传倒是成功了,就是前台读取图片路径时读出的是:http://uploadpic/images/20110929/20110929120838.jpg,我要加上本地的才会显示也就是这样的:http://localhost:15003/uploadpic/images/20110922103209.jpg
{
//命名一个今天的文件夹
string p = DateTime.Now.ToString("yyyyMMdd");
String folder = System.Web.HttpContext.Current.Server.MapPath("~/uploadpic/images/" + p);
//判断文件是否存在
if (!System.IO.Directory.Exists(folder))
{
//自动生成文件夹
System.IO.Directory.CreateDirectory(folder);
}
//如果存在,直接返回今天的文件夹名
return "uploadpic/images/" + p + "/";
}
/// <summary>
/// 上传图片
/// </summary>
/// <param name="FileUpload1">上传控件</param>
/// <param name="i">图片ID</param>
/// <returns></returns>
public static string uploadpic(FileUpload FileUpload1, int i)
{
string filetype = FileUpload1.PostedFile.ContentType;
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize <= 0)
{
return "0";
}
if (filesize > 1000000)
{
return "00";
}
if (filetype != "image/pjpeg" && filetype != "image/jpeg" && filetype != "image/jpg" && filetype != "image/peg" && filetype != "image/gif" && filetype != "image/x-png" && filetype != "application/x-shockwave-flash")
{
return "000000";
}
string fname = FileUpload1.PostedFile.FileName;
//获取图片的后缀名
fname = fname.Substring(fname.IndexOf('.'), fname.Length - fname.IndexOf('.'));
//给图片命名
string pic = DateTime.Now.ToString("yyyyMMddHHmmss");
//图片全名组合
fname = pic + ".jpg";
string path1 = CheckFile() + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
//返回完整的url
return VirtualPathUtility.ToAbsolute("/" + path1);
}
#33
//返回完整的url
return VirtualPathUtility.ToAbsolute("~/") + path1;
代码里面不都是给你转好了吗?
不是让你拷贝测试的吗
return VirtualPathUtility.ToAbsolute("~/") + path1;
代码里面不都是给你转好了吗?
不是让你拷贝测试的吗
#34
你这样写
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
在虚拟目录下可能是错误的
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
在虚拟目录下可能是错误的
#35
我不想保存到数据库中的路径是:/uploadpic/images/20110929/20110929134503.jpg这样的,我要保存进去的是:uploadpic/images/20110929/20110929134503.jpg这样的,然后在读出来要这样的:http://localhost:15003/uploadpic/images/20110929/20110929134503.jpg
#36
我后台代码是:
前台代码是:
显示图片:
string pic = Cgift.Chinagift.zlw.uploadpic(FileUpload2, 1);
if (pic == "0")
{
pic = HiddenField3.Value.ToString().Trim();
}
_cpbs.picbig = pic;
前台代码是:
<tr>
<td class="style3" align="right">
商品大图:
</td>
<td>
<asp:FileUpload ID="FileUpload2" runat="server" />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:Image ID="Image2" runat="server" Height="50px" Width="50px" />
<asp:HiddenField ID="HiddenField3" runat="server" />
</td>
</tr>
显示图片:
<asp:TemplateField HeaderText="商品图片 " ShowHeader="False">
<ItemTemplate>
<img alt="" src="/<%# Eval("picbig") %>" height="50px" width="50px" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:TemplateField>
#37
<img alt="" src="/<%# Eval("picbig") %>"
这样显示是错误的。
你的程序放在虚拟目录下就是错误的了。
这样显示是错误的。
你的程序放在虚拟目录下就是错误的了。
#38
return VirtualPathUtility.ToAbsolute("~/") + path1;
改成
return path1;
就是
uploadpic/images/20110929/20110929134503.jpg
这样的
改成
return path1;
就是
uploadpic/images/20110929/20110929134503.jpg
这样的
#39
非常感谢,终于OK了!
#40
对了【孟子E章】大哥,如果我还想分细呢?就是按照月自动生成文件夹,再在月文件夹里面按照天自动生成文件夹保存呢?比如:201109/20110901/20110901134503.jpg,201109/20110902/20110902134503.jpg,这个怎么实现呀?有分给的!
#41
CreateDirectory的问题。
#42
path1 = CheckFile(path1) + "/" + fname;
//path1 = path1 + "/" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
// FileUpload1.SaveAs(path1);
return path1;
=======================================
Server.MapPath("/"+path1)); //这个知道是啥意思不?
你返回
return path1; //是啥意思。。知道不?
你应该返回
Server.MapPath("/"+path1));
//path1 = path1 + "/" + fname;
FileUpload1.SaveAs(System.Web.HttpContext.Current.Server.MapPath("/"+path1));
// FileUpload1.SaveAs(path1);
return path1;
=======================================
Server.MapPath("/"+path1)); //这个知道是啥意思不?
你返回
return path1; //是啥意思。。知道不?
你应该返回
Server.MapPath("/"+path1));
#43
弄错了。。呵呵 。。
#44
学习了!