读书人

请问一个文件上传的有关问题

发布时间: 2012-02-15 12:09:44 作者: rapoo

请教一个文件上传的问题!
我想根据客户端提交的地址上传文件请问该怎么做?比如客户端有个地址是:"F:\1.txt"这个文件,我点上传后根据这个地址读取客户端1.txt这个文件然后上传到我服务端指定文件夹里面!请问该如何写?谢谢!!!

[解决办法]

C# code
/// <summary>        /// 上传单个文件        /// </summary>        /// <param name="File1">文件控件</param>        /// <param name="sizes">上传大小限制,KB单位;为小于等于0不限</param>        /// <param name="filetype">文件后缀限定,以“|”隔开,不带"."号。为空不限</param>        /// <param name="filepath">上传到文件夹路径,为空为当前文件夹</param>        /// <param name="returnmessage">上传返回信息</param>        /// <returns>返回上传的文件名虚拟路径</returns>        public static string UploadFile(System.Web.UI.HtmlControls.HtmlInputFile File1, int sizes, string filetype, string filepath,ref string returnmessage)        {            returnmessage = "";            try            {                filepath = filepath.Trim();                if (filepath.LastIndexOf("/") != filepath.Length - 1)                {                    filepath += "/";                }                string path = filepath; //保存至的文件夹                if (path == "")                {                    path = "./";                }                path = System.Web.HttpContext.Current.Server.MapPath(path);                //判断是否有上传的文件                string sourcepath = File1.Value.Trim();//文件的上传的路径                if (sourcepath == "" || sourcepath == null)                {                    returnmessage = "无上传文件";                    return "";                }                string tfiletype = sourcepath.Substring(sourcepath.LastIndexOf(".") + 1).ToLower();                //如果要求的后缀不为空则判断上传的文件的后缀是否合适                if (filetype != "")                {                    if ((filetype.ToLower() + "|").IndexOf(tfiletype + "|") < 0)                    {                        returnmessage = "上传的文件类型不符合设定";                        return "";                    }                }                if (sizes > 0)                {                    int sizes2 = sizes * 1024;                    //获得上传文件的大小                    long strLen = File1.PostedFile.ContentLength;                    //判断上传文件大小                    if (strLen > sizes2)                    {                        returnmessage = "上传的文件不能大于" + sizes.ToString() + "KB";                        return "";                    }                }                System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(path);                //判断文件夹否存在,不存在则创建                if (!dir.Exists)                {                    dir.Create();                }                string modifyfilename = Tools.GetId(0,12);                path = path + modifyfilename + "." + tfiletype;                while (System.IO.File.Exists(path))                {                    modifyfilename = Tools.GetId(0, 12);                    path = path + modifyfilename + "." + tfiletype;                }                File1.PostedFile.SaveAs(path);                filepath = filepath + modifyfilename + "." + tfiletype;                returnmessage = "上传成功";                return filepath;            }            catch            {                returnmessage = "上传出现错误";                return "";            }        }
[解决办法]
string fileType = this.upSheetFile.PostedFile.ContentType;
if (fileType != "text/xml")
{
this.lblErr.Text = "上传文件类型不正确!";
return;
}

if (this.upSheetFile.PostedFile.ContentLength == 0)


{
this.lblErr.Text = "请选择要上传的试卷";
}
else
{
string sheetName = upSheetFile.PostedFile.FileName;
XmlDocument xd = new XmlDocument();
try
{
xd.Load(upSheetFile.PostedFile.InputStream);
string title = xd.SelectSingleNode("//title").InnerText;
string score = xd.SelectSingleNode("//score").InnerText;
string timing = xd.SelectSingleNode("//timing").InnerText;
string tmcount = xd.SelectSingleNode("//tmcount").InnerText;
string content = xd.SelectSingleNode("//content").InnerText.Replace("\t", "").Replace("\r", "").Replace("\n", "");//.Replace(" ","カ")
content = createimg(content);

if (content == "")
{
this.lblErr.Text = "试卷上传失败,操作无写入权限!";
return;
}
string jsonTiMuScore = xd.SelectSingleNode("//JsonTiMuScore").InnerText;
string jsonAnswer = xd.SelectSingleNode("//JsonAnswer").InnerText;
string GUID = xd.SelectSingleNode("//GUID").InnerText;
string sheetID = new DBSheet().InsertSheetFile(title, score, timing, tmcount, content, jsonTiMuScore, jsonAnswer, TeacherID, GUID);
if (sheetID == "")
{
this.lblErr.Text = "试卷上传失败或试卷已存在!";
}
else
{
Public.CreateTestFile(sheetID, content, Request.PhysicalApplicationPath);
this.lblErr.Text = "试卷上传成功!" + sheetID;
Response.Redirect("SheetEdit.aspx", true);
//Response.Write("<script>window.location.reload()</script>");
//BindSheet();
}

}
catch (Exception ex)
{
this.lblErr.Text = "上传文件格式不正确!" + ex.Message;
}


试着改一下
[解决办法]
当然可以了。。


C# code
using System;using System.Data;using System.Configuration;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;public partial class _uploadIT : System.Web.UI.Page{    //protected System.Web.UI.WebControls.Button UploadButton;    // protected System.Web.UI.WebControls.Label strStatus;    protected void Page_Load(object sender, EventArgs e)    {        if (Session["adminName"].ToString().Trim() != "")        {                if((Convert.ToInt32(Session["level"].ToString()) == 3 && Convert.ToInt32(Session["class"].ToString()) == 1)|| (Convert.ToInt32(Session["level"].ToString()) == 5))                //(Convert.ToInt32(Session["level"].ToString()) >= 4)                {                                    }                else                {                    Response.Redirect("error.html");                }        }        else        {              Response.Redirect("login.aspx");        }             }    private Boolean SaveImages()    {        HttpFileCollection files = HttpContext.Current.Request.Files;        System.Text.StringBuilder strMsg = new System.Text.StringBuilder();        strMsg.Append("上传的文件分别是:<hr color=red>");        try        {            for (int iFile = 0; iFile < files.Count; iFile++)            {                HttpPostedFile postedFile = files[iFile];                string fileName, fileExtension, file_id;                int year = System.DateTime.Now.Year;                int month = System.DateTime.Now.Month;                int day = System.DateTime.Now.Day;                int hour = System.DateTime.Now.Hour;                int minute = System.DateTime.Now.Minute;                int second = System.DateTime.Now.Second;                int millisecond = System.DateTime.Now.Millisecond;                //string my_file_id = year.ToString() + month.ToString() + day.ToString() + hour.ToString() + minute.ToString() + second.ToString() + millisecond.ToString() + iFile.ToString();                fileName = System.IO.Path.GetFileName(postedFile.FileName);                fileExtension = System.IO.Path.GetExtension(fileName);                file_id = fileName;                if (fileName != "")                {                    fileExtension = System.IO.Path.GetExtension(fileName);                    strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");                    strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");                    strMsg.Append("上传文件的文件名:" + file_id + "<br>");                    strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");                    postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("upload/") + file_id);                }            }            strStatus.Text = strMsg.ToString();            return true;        }        catch (System.Exception Ex)        {            strStatus.Text = Ex.Message;            return false;        }    }    protected void UploadButton_Click(object sender, EventArgs e)    {        Boolean bl = SaveImages();        if (bl)        {            adminDataBase db = new adminDataBase();            int l = db.Log(Session["adminName"].ToString(), "上传文件");            Response.Write("<script>alert('上传成功!')</script>");        }        else        {            Response.Write("<script>alert('上传失败!')</script>");        }    }} 


[解决办法]

C# code
if ((FileUpload1.HasFile) == true) {         ///'''上传文件''''''''''''''         string savepath = Server.MapPath("Data\\");         string filename = null;         string filekjm = null;         string ip = null;         ip = Request.ServerVariables("REMOTE_ADDR");         ip = Strings.Replace(ip, ".", "");         filekjm = System.IO.Path.GetExtension(FileUpload1.FileName);         if (filekjm != ".xls") {             Response.Write("<script>alert('请导入Excel文件!!!')</script>");             return;         }         filename = DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ip + filekjm;         filename = Strings.Replace(filename, " ", "");         savepath += filename;         FileUpload1.SaveAs(savepath);     }
[解决办法]
#region 上传文件
/// <summary>
/// 上传文件
/// </summary>
/// <returns></returns>
private ArrayList SaveFiles()
{
///'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;

try
{
for (int iFile = 0; iFile < files.Count; iFile++)
{
///'检查文件扩展名字
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + iFile .ToString () + fileExtension ;
///'可根据扩展名字的不同保存到不同的文件夹
///注意:可能要修改你的文件夹的匿名写入权限。
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("file/") + fileName);

}
}
}
catch
{
}
}
#endregion


这个地方是因为可能别人上传的文件重名,这样就把服务器上的文件覆盖掉了
我用当前时间,就可以避免文件丢失
不过就是服务器文件会一直增加
[解决办法]
我做了个上传整个文件夹的程序可以给你参考下
C# code
    /// <summary>    /// 上传当前文件夹下面的所有文件    /// </summary>    private void UploadCurrentFolder()    {        //获取文件夹的路径        int filenameLastindex = filename.LastIndexOf(@"\");        string dirinfo = filename.Substring(0, filenameLastindex);  //文件夹的路径        DirectoryInfo dir = new DirectoryInfo(dirinfo);        //获取文件夹的名称        int dirinfoLastindex = dirinfo.LastIndexOf(@"\");        string dirname = dirinfo.Substring(0, dirinfoLastindex);        dirname = dirinfo.Replace(dirname, ""); //文件夹名称        //上传到服务器的路径        string path = Server.MapPath(@"~/upload/" + dirname + "/");        //将文件夹里的所有数据传输到服务器上        string newFilename;        string astractFileType = ".jpg.gif.exe";        foreach (FileInfo files in dir.GetFiles())        {            //获取上传文件的类型            string FileExtension = files.Extension;            //需要限制上传文件的类型            if (astractFileType.IndexOf(FileExtension) >= 0)            {                Response.Redirect("Upload.aspx?stateinfo=提示:文件夹中含有JPG,GIF,EXE类型格式的文件!不是允许的格式。部分文件没有被上传");            }            else if (files.Length > 1024000 * 150)            {                Response.Redirect("Upload.aspx?stateinfo=提示:上传的文件超过允许的上限!最大上传文件限制150M!");            }            else            {                //如果服务器上该文件夹不存在的话,创建文件夹                if (!Directory.Exists(path))                {                    Directory.CreateDirectory(path);                }                //如果文件存在就改变文件名                if (File.Exists(path + files.Name))                {                    //加上日期,精确到毫秒                    newFilename = DateTime.Now.ToString("yyyyMMddHHmmssff") + files.Name;                }                //如果文件名超长                else if (files.Name.Length > 50)                {                    newFilename = DateTime.Now.ToString("yyyyMMddHHmmssff") + files.Name.Substring(0, 47) + "……" + files.Extension;                }                else                {                    newFilename = files.Name;                }                files.CopyTo(path + newFilename);                Response.Redirect("Upload.aspx?stateinfo=上传成功!");            }        } 

读书人网 >asp.net

热点推荐