2017-10-10 1 views
1

OK ... 그래서 심지어 가능 할지도 모릅니다. 처음으로 코드를 마이 그 레이션하는 초기 단계에서 이미지 파일을 업로드 할 수 있습니까? 예를 들어 초기 사이트 사용자 또는 세로 이미지가있는 관리자 사용자를 만들 때 해당 사용자를 처음 만들 때 해당 이미지를 업로드 할 수 있습니까?코드 첫 번째 마이 그 레이션을 수행하는 동안 이미지 업로드

SO 또는 온라인과 관련이있는 항목을 찾을 수 없기 때문에 실행 가능성이있는 해결책을 제시하기까지는 거의 찾아 볼 수 없기 때문에 이것이 처음 시도되었을 수도 있습니다.

+0

어디서 업로드 하시겠습니까? 그것이 당신을위한 실행 가능한 해결책이라면 DB 필드에 그것을 시드 할 수 있습니다. – OctoCode

+0

이미지 이름에 GUID를 사용하여 모든 인물의 "repo"에 데이터베이스를 업로드하는 대신 데이터베이스에 "시드"하지 않을 것입니다. 이것은 프로덕션 환경에서 사용하는 것이며, 마이 그 레이션에서 가능하면 복제합니다. –

답변

1
  1. 먼저 새 마이그레이션 파일을 만들거나 기존 마이그레이션 파일을 사용하십시오.
  2. 파일 업로드 코드와 repo에서 파일 제거를위한 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.net 대신 system.io로 사용할 수 있습니까? 시스템 파일 객체를 사용하고 싶습니까? 가능하다면 URI 대신 대상에 대해 서버 맵 경로를 사용하고 싶습니다. –

+0

좋은! 변종을 가져 주셔서 감사합니다. 나는 시험해보고 최대한 빨리 당신에게 돌아갑니다. –

관련 문제