当前位置:编程学习 > C#/ASP.NET >>

关于FileUpload上传张片、相对路径问题。

Default.aspx:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script   language="javascript">  
 function Check_FileType()
{
var str=document.getElementById("FileUpload1").value;
 var pos = str.lastIndexOf(".");
 var lastname = str.substring(pos,str.length)  
 if (lastname.toLowerCase()!=".jpg" && lastname.toLowerCase()!=".gif")
 {
     alert("您上传的文件类型为"+lastname+",图片必须为.jpg,.gif类型");
     return false;
 }
 else 
 {
  return true;
 }

 </script>  
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:FileUpload ID="FileUpload1" runat="server" />   
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" OnClientClick="return Check_FileType()"/> 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="FileUpload1"
            ErrorMessage="必须是 jpg或者gif文件"></asp:RequiredFieldValidator>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="FileUpload1"
            ErrorMessage="必须是 jpg或者gif文件" ValidationExpression=".*([\.jpg]|[\.jpeg]|[\.jpe]|[\.gif]|[\.png]|[\.JPEG]|[\.JPG]|[\.GIF]|[\.bmp]|[\.BMP])$"></asp:RegularExpressionValidator>
        <asp:Image ID="Image1" runat="server" />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div> 
            
    </form>
</body>
</html>

CS文件:

using System;
using System.Data;
using System.Data.Sql;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Image1.Visible = false;

    }


    protected void Button1_Click(object sender, EventArgs e)
    {
        string constr = "persist security info=false;uid=sa1;pwd=sa1;database=image";
        SqlConnection con = new SqlConnection(constr);

        

        string spath = @"\新建文件夹\image\";
        if (FileUpload1.HasFile)
        {
            string fname = FileUpload1.FileName;
            string tt = fname.Substring(fname.LastIndexOf(".") + 1);
            spath += fname;
            FileUpload1.SaveAs(spath);
            Label1.Text = spath;
            if (tt == "jpg" || tt == "gif")
            {
                Image1.ImageUrl = @"\新建文件夹\image\" + fname;
                Image1.Visible = true;
            }
        }
        else 
        {
            Label1.Text = "你还没有上传文件!";
        }
        string strcmd = "insert into tupian(t)values('" + Label1.Text + "')";
        SqlCommand cmd = new SqlCommand(strcmd, con);


        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        Label1.Text = "添加成功!";
    }
}

   关于spath的那个相对路径要怎么设置。我现在怎么搞图片都在F:盘。
--------------------编程问答-------------------- Image1.ImageUrl = "~\新建文件夹\image\" + fname; --------------------编程问答-------------------- protected void btnUpload_Click(object sender, EventArgs e) 
    { 
        if (fileUpload.HasFile) 
        { 
            string savePath = Server.MapPath("~/upload/"); 
            if (!System.IO.Directory.Exists(savePath)) 
            { 
                System.IO.Directory.CreateDirectory(savePath); 
            } 
            savePath = savePath + "\\" + fileUpload.FileName; 
            fileUpload.SaveAs(savePath); 
          } 
    } 

显示page.resolveurl
--------------------编程问答-------------------- string spath = @"\新建文件夹\image\";变为:

string spath = Server.MapPath("~/新建文件夹/image" ); --------------------编程问答-------------------- 学习,帮顶 --------------------编程问答-------------------- 可以直接存储图片名(包含扩展名),到时显示的时候就构造下嘛,前提是你要把图片放到同个目录下 --------------------编程问答-------------------- 2楼,请楼主平时注意一下C#语言的一些关键字和字符 --------------------编程问答-------------------- 用MapPath把相对位置转化为绝对位置 --------------------编程问答-------------------- 大哥些。你告诉我只前,。先试下嘛,。都不对。- -!

   郁闷死了、 --------------------编程问答--------------------
this.Image1.ImageUrl = "Images/NewsPic/img1.jpg";

这个是可以的 --------------------编程问答-------------------- 又沉了。我晕。 --------------------编程问答-------------------- string spath = Server.MapPath("~/新建文件夹/image" );
完毕。 --------------------编程问答-------------------- 别管什么路径,全部相对跟路径就行了,用“/”就行了。。
真怀疑了,是不是做开发的 --------------------编程问答--------------------

protected void btnUpLoad_Click(object sender, EventArgs e)
    {
        //获取准备上传的文件的名称
        string fileName = fuConver.FileName;
        //获取准备上传文件的物理路径
        string filePath = fuConver.PostedFile.FileName;
        //获取准备上传的文件的大小
        int length = fuConver.PostedFile.ContentLength;
        //当文件小于2000000字节,即2M时:
        if (length < 2000000)
        {
            //获取文件的后缀名
            string exec = Path.GetExtension(fileName);
            if (exec.ToUpper() == ".GIF" || exec.ToUpper() == ".JPG")
            {
                string newName = DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond.ToString() + exec;
                //在指定的目录上保存上传的文件
                fuConver.SaveAs(Server.MapPath("images/BKConver/" + newName));
                ViewState["Conver"] = newName;
            }
            else
            {
                Response.Write("<script>alert('文件格式不正确!请重新上传!');</script>");
            }
        }
        else
        {
            Response.Write("<script>alert('文件太大!上传失败!');</script>");
        }
    } 
--------------------编程问答--------------------
引用 13 楼 luolina1989 的回复:
C# code

protected void btnUpLoad_Click(object sender, EventArgs e)
    {
        //获取准备上传的文件的名称
        string fileName = fuConver.FileName;
        //获取准备上传文件的物理路径
        string filePath = f……




fuConver 这个是什么。= = --------------------编程问答--------------------
sender, EventArgs e)  
  {  
  if (fileUpload.HasFile)  
  {  
  string savePath = Server.MapPath("~/upload/");  
  if (!System.IO.Directory.Exists(savePath))  
  {  
  System.IO.Directory.CreateDirectory(savePath);  
  }  
  savePath = savePath + "\" + fileUpload.FileName;  
  fileUpload.SaveAs(savePath);  
  }  
  }  


  --------------------编程问答-------------------- string spath = @"\新建文件夹\image\";
不要再这样了
我刚遇到这个问题
必须要获得当前网站的目录  有个方法来着  你这样写死 万一用户发布网站修改了文件夹的名字岂不是就找不到了 --------------------编程问答-------------------- 发布的时候难道你没有什么错误吗 --------------------编程问答-------------------- 我就是发现这个问题,才请教大家,如何可以把图片就放在和网页同一个目录下的image文件夹中,- -


  还是没有解决呐、 --------------------编程问答--------------------

FileUpload fulBook = dvBook.FindControl("fulBook") as FileUpload;
        string fileName = fulBook.FileName;
        if (fileName.Trim().Length != 0)
        {
            string strPath = Server.MapPath("~/images/BookCovers");           
            fulBook.PostedFile.SaveAs(strPath);
        }
--------------------编程问答--------------------
FileUpload fulBook = dvBook.FindControl("fulBook") as FileUpload;
        string fileName = fulBook.FileName;
        if (fileName.Trim().Length != 0)
        {
            string strPath = Server.MapPath("~/images/BookCovers");           
            fulBook.PostedFile.SaveAs(strPath);
        }
--------------------编程问答--------------------
引用 19 楼 yingyuebingya 的回复:
C# code

FileUpload fulBook = dvBook.FindControl("fulBook") as FileUpload;
        string fileName = fulBook.FileName;
        if (fileName.Trim().Length != 0)
        {
            string strPath =……


dvBook是什么? --------------------编程问答-------------------- 这样判断上传文件类型好像不安全吧,据说很多木马能绕过。 --------------------编程问答-------------------- Server.MapPath("images/") --------------------编程问答-------------------- 实在不行了取相对跟的路径.
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,