使用httprequest.files获取上传文件,实现上传附件功能

百合不哭 百合不哭     2022-09-12     781

关键词:

使用HttpRequest.Files 获取上传文件,实现上传附件功能,不同浏览器会有差异:

  1. 获得在 Google 浏览器上传后得到的 HttpRequest.Files  (客户端上载文件的集合)

                       

 

单个文件查看:对应的FileName 是上传文件的原始文件名:例:开发管理手册2017版.docx

 

  1. 获取IE浏览器上传后HttpRequest.Files:

       

 

单个文件查看:对应的FileName 是上传文件 带路径的文件名 例:C:\\Users\\XXX\\Desktop\\开发管理手册2017版.docx

         

 

  1. 因为不同浏览器对应的FileName不一致,在保存文件的时候,需要对FileName 进行处理:(仅获取文件名)

string aFirstName = aFile.Substring(postedFile.FileName.LastIndexOf("\\") + 1, (postedFile.FileName.LastIndexOf(".") - aFile.LastIndexOf("\\") - 1));

 

    [HttpPost, Route("PostFile")]
        public ResponeResult<List<FileModel>> PostFile()
        {
            var result = new ResponeResult<List<FileModel>>(PromptCode.SUCCESS, "附件上传成功。");
            string[] allowExtension = { ".doc", ".docx", ".xls", ".xlsx", ".pdf", ".zip", ".rar", ".jpg", ".png", ".gif" };
            var httpRequest = HttpContext.Current.Request;
            List<FileModel> docfiles = new List<FileModel>();
            if(httpRequest.Files.Count > 0) {
                var date = DateTime.Now.ToString("yyyy-MM-dd");
                var relativePath = string.Format("/Upload/Contract/{0}/", date);
                var path = HttpContext.Current.Server.MapPath(@"~" + relativePath);
                if(!Directory.Exists(path))//判断是否存在
                {
                    Directory.CreateDirectory(path);//创建新路径
                }
                FileModel mode = null;
                foreach(string file in httpRequest.Files) {
                    var postedFile = httpRequest.Files[file];
                    string fileType = System.IO.Path.GetExtension(postedFile.FileName);
                    if(string.IsNullOrEmpty(fileType)) {
                        continue;
                    }

                    var rs = allowExtension.Contains(fileType.ToLower());
                    if(!rs)
                        continue;
                    //对文件名处理 
                    var aFile = postedFile.FileName;
                    string aFirstName = aFile.Substring(postedFile.FileName.LastIndexOf("\\") + 1, (postedFile.FileName.LastIndexOf(".") - aFile.LastIndexOf("\\") - 1));
                    string strGuid = Guid.NewGuid().ToString();
                    //保存文件名
                    var fileName = "file_" + strGuid + fileType;
                    var filePath = path + fileName;
                    postedFile.SaveAs(filePath);
                    var webHostConfig = ConfigurationManager.AppSettings["WebHostDomain"];
                    var webPath = string.Format("http://{0}{1}{2}", string.IsNullOrEmpty(webHostConfig) == true ? HttpContext.Current.Request.Url.Authority : webHostConfig, relativePath, fileName );
                    mode = new FileModel();
                    mode.FileId = strGuid;
                    mode.FileName = aFirstName + fileType;
                    mode.FilePath = filePath;
                    mode.WebPath = webPath;
                    mode.RelativePath = relativePath + fileName;
                    mode.CreateTime = DateTime.Now;
                    mode.CreateUser = Session.UserId;
                    docfiles.Add(mode);
                }
                if(!this.fileService.BatchAdd(docfiles)) {
                    return new ResponeResult<List<FileModel>>(PromptCode.ERROR, "上传附件保存失败,请联系管理员。");
                }
                var filedata = docfiles;
                result.Data = filedata;
                return result;
            }
            else {
                return new ResponeResult<List<FileModel>>(PromptCode.ERROR, "上传附件为空。");
            }
        }

 

django处理文件上传fileuploads

HttpRequest.FILES表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data12<formenctype="multipart/form-data" method="post" action="/foo/"><inputtype="file" name="image"  查看详情

2019.03.23http

...是相应 行头  之间还有个空行  体 HttpRequest请求对象(只读)当用户访问一个视图函数时,Django会创建一个request对象(HttpRequest)HttpRequest对象中封装了所有的Http协议中的请求信息常见属性和方法HttpRequest.s... 查看详情

angularjs使用$httppost上传文件的时候,怎样获取文件上传的进度

参考技术A对比一下文件大小 查看详情

如何使用Javascript从文件上传中获取完整路径

】如何使用Javascript从文件上传中获取完整路径【英文标题】:howtogetfullpathfromfileuploadusingJavascript【发布时间】:2010-12-1018:09:46【问题描述】:我需要知道如何使用javascript从文件上传中获取完整路径,我尝试使用以下编码但没有... 查看详情

使用 php 获取上传文件的大小

】使用php获取上传文件的大小【英文标题】:Getsizesofuploadedfileswithphp【发布时间】:2017-11-1910:13:47【问题描述】:在我将一些文件上传到我的服务器并将它们保存在sql中后,我将它们列出在我的网站上。while($a=mysqli_fetch_assoc($get_... 查看详情

如何获取上传文件的路径

...上运行一个Spark集群,并为每个作业上传一个配置文件。使用提交命令上传的文件的路径是什么?在下面的示例中,如何在SparkContext初始化之前读取文件Configuration.properties?我正在使用Scala。gclouddataprocjobssub 查看详情

如何使用 Apache HttpClient 4 获取文件上传的进度条?

】如何使用ApacheHttpClient4获取文件上传的进度条?【英文标题】:HowtogetaprogressbarforafileuploadwithApacheHttpClient4?【发布时间】:2011-10-2619:20:52【问题描述】:我有以下代码用于使用Apache的HTTP客户端(org.apache.http.client)上传文件:publics... 查看详情

在使用 Extjs 上传之前获取“更改函数”的文件大小

】在使用Extjs上传之前获取“更改函数”的文件大小【英文标题】:Getfilesizeon\'changefunction\'beforeuploadusingExtjs【发布时间】:2013-06-2511:09:17【问题描述】:我想在更改功能运行时获取文件大小。我尝试了更多,但没有任何效果。... 查看详情

使用 ajax 获取通过 FTP 上传的文件的文件大小 - 试图防止 ajax 中断自身

】使用ajax获取通过FTP上传的文件的文件大小-试图防止ajax中断自身【英文标题】:UsingajaxtogetfilesizeonfilebeinguploadedviaFTP-tryingtopreventajaxfrominterruptingitself【发布时间】:2015-03-3022:56:10【问题描述】:我正在尝试使用ajax调用检查FTP上... 查看详情

使用 Azure 逻辑应用添加或修改 blob 时如何获取上传文件的文件名?

】使用Azure逻辑应用添加或修改blob时如何获取上传文件的文件名?【英文标题】:WithAzurelogicappsWhenblobisAddedorModifiedhowtogetfilenameofuploadedfile?【发布时间】:2021-12-1421:31:45【问题描述】:当使用逻辑应用将文件上传到blob存储时,我... 查看详情

如何使用 Revit API 从上传到系统的 Revit 文件中获取所有元素

】如何使用RevitAPI从上传到系统的Revit文件中获取所有元素【英文标题】:HowtogetallelementsfromRevitfilesuploadedinthesystemusingRevitAPI【发布时间】:2021-03-2700:06:29【问题描述】:我们可以在Autodeskforgeviewer上查看Revit文件。我们需要使用Rev... 查看详情

使用 Vuejs 在 Firebase 存储中获取上传文件的 url

】使用Vuejs在Firebase存储中获取上传文件的url【英文标题】:GeturlofuploadedfileinfirebasestoragewithVuejs【发布时间】:2020-09-1109:43:36【问题描述】:我的脚本有一个小错误,我正在尝试使用vuejs将文件上传到firebase存储,除了url为空,我... 查看详情

使用 NodeJS REST API 通过 Google Cloud Storage 获取文件上传进度

】使用NodeJSRESTAPI通过GoogleCloudStorage获取文件上传进度【英文标题】:GetfileuploadingprogresswithGoogleCloudStorageusingNodeJSRESTAPI【发布时间】:2017-10-1406:55:32【问题描述】:我正在使用@google-cloud/storagenpm包从NodeJS上传文件。它正在成功将... 查看详情

从 WTForms 字段获取上传的文件

...15-07-2813:22:00【问题描述】:在Flask文档中,文件上传示例使用&lt;inputtype="file"name="file"&gt;然后request.files[\'file\']来获取文件。我正在使用WTFormsFileF 查看详情

如何获取使用 Cloudfront 上传的 S3 存储桶中的文件?

】如何获取使用Cloudfront上传的S3存储桶中的文件?【英文标题】:HowtogetafileinaS3bucketthatwasuploadedusingCloudfront?【发布时间】:2014-07-2712:31:03【问题描述】:我目前正在尝试在现有S3存储桶上实现Cloudfront上传(POST/PUT方法)。我的Clo... 查看详情

上传前获取上传文件大小

...传开始之前获得该文件的确切大小?我猜这需要在客户端使用jQuery或JavaScript完成。有什么想法吗?【问题讨论】:【参考方案1】:$("#file_input_selector").bind(\'change\',funct 查看详情

移动端webjsjdk上传文件使用progress获取上传进度无法正常使用

这行代码在电脑端执行的时候可以正常使用在iphone的浏览器的时候无法上传点击上传页面没有任何反应能解决的加我好友我发红包QQ542846182progress:function*(p) //console.log('Progress:'+p); document.getElementById('progressNumber'... 查看详情

我尝试从 multipart api 上传文件和文本数据,但即使我使用 multer 也无法获取文件

】我尝试从multipartapi上传文件和文本数据,但即使我使用multer也无法获取文件【英文标题】:Itriedtouploadfileandtextdatafrommultipartapibutnotabletogetfileseveniusemulter【发布时间】:2020-11-1410:23:52【问题描述】:我尝试从api上传文件和文本... 查看详情