【背景】
之前做了两个网站,都用到了文件上传的功能。米老师教导我们一件事如果重复了三遍那么就要想办法用封装了。
【项目代码】
Controller代码:
string strFileName = "";
HttpPostedFileBase file = Request.Files["photo"];
string ClientPath = AppDomain.CurrentDomain.BaseDirectory + "Photo\\";
string strSavePath;
if (file == null || file.ContentLength <= 0)
{
ViewBag.error = "文件不能为空";
return RedirectToAction("AddInfoIndex");
}
else
{
string strFilename = Path.GetFileName(file.FileName);
int intFilesize = file.ContentLength;//获取上传文件的大小单位为字节byte
string fileEx = System.IO.Path.GetExtension(strFilename);//获取上传照片的扩展名
string strNoFileName = System.IO.Path.GetFileNameWithoutExtension(strFilename);//获取无扩展名的照片名
string FileType = ".jpg,.png,.PNG,.JPG,.JPEG,.gif,.GIF";//定义上传照片的类型字符串
strFileName = strNoFileName + DateTime.Now.ToString("yyyyMMddhhmmss") + fileEx;
if (!FileType.Contains(fileEx))
{
ViewBag.error = "文件类型不对,只能导入.jpg,.png,.PNG,.JPG,.JPEG,.gif,.GIF格式的照片";
return RedirectToAction("AddInfoIndex");
}
strSavePath = Path.Combine(ClientPath, strFileName);
file.SaveAs(strSavePath);
}
</span>
View代码:
<span style="font-size:18px;"><div class="contentdiv">
@using (Html.BeginForm("AddPhoto", "ExcellentDispatch", FormMethod.Post, new { id = "upPhoto", enctype = "multipart/form-data" }))
{
<br/>
<img src="@Session["image"]" height="192" width="144" id="myImg"/>
@Html.HiddenFor(a => a.photo, new { @id = "image" });
<br />
<input type="file" name="photo" />
<br />
<input type="submit" value="上传照片" οnclick=" UpPhoto() " class="allButton" />
}
</div></span>
【功能封装】
本来想把这个功能封装在一个类里面,结果有些问题暂时难以解决。就自己用Asp做了一个Demo,虽然我的ASP水平不咋的,总算是做成功了!(附Demo下载)
【总结】
1、学习要多思考。我观察当初跟自己一块做项目的同事,很多人已经对当初做项目的技术实现没有印象了,更别提深入研究了。所以我觉得并不是你做项目多了,你就多牛,而是你做项目过程中,你投入了多少,思考了多少,总结了多少。
2、实践要会,理论要懂。我感觉自己以前的学习思路有些偏激了,忽视了基础知识的重要性。只有对理论有深刻的掌握,才能灵活应用,否则只是玩别人玩剩下的东西,自己的创新就无从谈起。