2017-10-10 151 views
1

好的......所以这里有些东西我甚至不知道它是否可能。是否有可能在代码第一次迁移的初始阶段上载图像文件?例如,创建具有肖像图像的初始网站用户或管理员用户时,是否可以在初次创建该用户期间上传该图像?在执行代码优先迁移过程中上传图片

我找不到任何与SO或在线相关的东西,甚至会提出一个可行的解决方案,所以这可能是第一次尝试这样的事情。

+0

你想“上传”它的位置?如果这对你来说是一个可行的解决方案,你可以将它种入数据库领域。 – OctoCode

+0

我宁愿不将它“种”到数据库中,而是使用图像名称的GUID将其上传到所有肖像的“回购”。这就是即时通讯在生产环境中使用,并以某种方式在迁移中复制它(如果可能的话) –

回答

1
  1. 首先,创建新的迁移文件(或使用现有的文件)。
  2. Inside Up()方法,您可以将代码 文件上传,并在里面的Down()方法代码从 文件删除回购(如果你想恢复迁移)。

下面是众多可能的方式做一些远程上传之一,这是最简单的一个:

using (var webClient = new WebClient()) 
{ 
    webClient.UploadFile("ftp://localhost/samplefile.jpg", "samplefile.jpg"); 
} 

对于这个工作,你应该添加using System.Net;到迁移文件。另外,显然你需要处理上传权限和凭证,这取决于你使用的远程回购的类型。

编辑

使用File对象更是微不足道。这里是移植类的完整代码:

using System; 
using System.Data.Entity.Migrations; 
using System.IO; 

public partial class MigrationWithFileCopy : DbMigration 
{ 
    public override void Up() 
    { 
     File.Copy("sourceFile.jpg", "destinationFile.jpg"); 
    } 

    public override void Down() 
    { 
     File.Delete("destinationFile.jpg"); 
    } 
} 
+0

我将执行此操作,尝试并让您知道。谢谢:) –

+0

可以用system.io而不是system.net吗?像使用系统文件对象?如果可能的话,我想为目的地使用服务器映射路径而不是URI。 –

+0

很好!感谢您的变体。我会尽快测试并尽快回复你。 –

相关问题