首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将文件从客户端应用程序传递到aspcore mvc应用程序,并准备好上载c# asp.netcore mvc的文件。

将文件从客户端应用程序传递到aspcore mvc应用程序,并准备好上载c# asp.netcore mvc的文件。
EN

Stack Overflow用户
提问于 2020-06-18 01:17:16
回答 1查看 54关注 0票数 0

场景:我有一个调用客户端应用程序,它最终将生成一个需要发送电子邮件的.pdf。我已经创建了一个作为电子邮件编写器的aspcore mvc应用程序。其中一个操作采用电子邮件参数,例如,Cc。等和预填充部分或所有的电子邮件表格,供他们审查和按发送。

问题:我正在努力传递一个文件路径,以便作为附件在表单中使用。我也不认为这是最安全的方法,因为它可能导致多个安全漏洞。

我的附件来自我的电子邮件类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public List<IFormFile> Attachments { get; set; }

如果调用应用程序没有传递附件文件路径,用户可以使用文件输入框手动选择一个。这个很好用。但是,如果文件路径被发送到另一个位置,我就无法像表单的其他部分那样,将其预先填充到文件输入框中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            if (attachment != null)
        {
            var fileBytes = System.IO.File.ReadAllBytes(attachment);
            MemoryStream ms = new MemoryStream();
            ms.Write(fileBytes, 0, fileBytes.Length);
            var result = new FileStreamResult(ms, "application/pdf");
            IFormFile file = new FormFile(result.FileStream, 0, result.FileStream.Length, "filename", "filename.pdf")
            {
                Headers = new HeaderDictionary(),
                ContentType = "application/pdf",
            };

            attachmentList.Add(file);
        }

然后,我将它添加到我的模型中,将其传递到视图以进行预填充。

你能提出一个工作方法来达到我的需要吗?或者提出不同的方法来达到这个目的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 01:24:29

“我无法让它预先填充文件输入框”

...you的意思是在浏览器中?不,你不能那样做,因为安全原因。在没有用户交互的情况下,浏览器无法在用户设备上指定文件。这是为了防止恶意网站偷偷地从设备的文件系统读取私有数据。(老实说,不管怎样,这是不切实际的--不同的操作系统有不同的文件系统结构,当然,并非所有的文件都存在于所有设备上,所以指定一条始终能够工作的路径基本上是不可能的。)

但无论如何,我也不确定您的需求是否有意义--从我可以告诉您的信息来看,您已经生成了PDF并将其发送到MVC应用程序。因此,MVC应用程序应该将文件存储在服务器上,然后在用户完成并提交表单时将其与表单相关联。即使有可能,第二次上传也没有任何价值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62446546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文