Chapter 6. 文件上传

Posted 庚xiao午

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chapter 6. 文件上传相关的知识,希望对你有一定的参考价值。

步骤:

1、先将项目中的相对路径位置写出来     

  string path = "images/aaa.txt";

2、将此相对路径映射成绝对路径     

  string endpath = Server.MapPath(path);

3、保存    

   FileUpload1.SaveAs("endpath");

问题1:文件重名,容易被覆盖

办法:保留文件原有的名字
   string path = "images/"+FileUpload1.FileName;

问题2:文件重名,多人上传同一名称的文件会被覆盖

办法:名称添加时间拼接,用户名拼接

   string path="images/"+DateTime.Now.ToString("yyyyMMddHHmmss")+Request.Cookies["User"].Value+FileUpload1.FileName;

问题3:上传文件格式限制

办法1:

  控件属性:accept = ".jpg,.png,.jpeg"; 

办法2:

  使用JS,获取用户选择文件的后缀名,验证是否与要求的一致 

document.getElementById("Button1").onclick = function () 
{
var fl = document.getElementById("FileUpload1"); var aa = fl.value.substr(fl.value.length - 4, 4); if (aa != ".txt" && aa != ".png" && aa != ".jpg")
     { alert(
"文件格式选择不正确!"); return false; } };

 

问题4:文件过大

办法1、扩容

  Web.config配置文件:
    <httpRuntime maxRequestLength="40960"/>
    以KB为单位,默认4096,不要太大,因为会占用服务器内存

办法2、文件大小限制
  1、C#端限制
    if (FileUpload1.PostedFile.ContentLength > (4096 * 1024))  但是,不好用

  2、客户端JS限制
    fl.files[0].size 能获取到选中文件的大小,B为单位

document.getElementById("Button1").onclick = function () 
{
        var fl = document.getElementById("FileUpload1");

        if (fl.files[0].size > (1024 * 1024 * 4)) 
     {
            alert("文件超过4MB");
            return false;
        }
};

 

以上是关于Chapter 6. 文件上传的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

VSCode自定义代码片段6——CSS选择器

Thinking in java Chapter18 IO

将存储在内存中的文件上传到s3

关于PHP上传文件时配置 php.ini 中的 upload_tmp_dir

JS创建文件并上传服务器