얻으민
745
2019-03-02 03:35:29 작성 2019-03-02 04:20:42 수정됨
15
1488

간단한 대용량 파일 공유 or 전송을 위한 프로그램 만들어봤습니다.




이 프로그램은 Electron으로 만들어졌습니다.

실행환경은 Windows입니다.


이런 아이디어에서 만들었습니다.


간단히 파일 하나 상대에서 보내고 싶은데 파일이 너무 큰 경우 경험해 보셨나요?

  • 네이버는 2GB
  • 다음은 4GB
  • 카카오톡은 300MB
  • 텔레그램은 1500MB

나는 큰 파일을 잠깐만 공유해서 상대에게 보내고 싶을 뿐인데 위 서비스 들은 그리 큰 크기를 지원하지 않습니다.

그렇다고 파일을 여러개로 나눠서 보내자니 번거롭고 나누는데 시간이 들기도 하고, 클라우드에 올리자니 클라우드에 올리기 너무 큰 파일도 있고 클라우드는 업로드 하는 시간도 너무 많이 듭니다.

그래서 이 프로그램을 만들었습니다.

다운로드 링크


내부 IP 사용중이시면 외부 사용자와 공유를 위해서는 포트포워딩을 하셔야됩니다.


다음은 간단한 사용법 영상입니다.



Github 주소 : https://github.com/lleellee0/simple-file-share

9
2
  • 댓글 15

  • 돈까스
    1k
    2019-03-02 12:26:20 작성 2019-03-02 12:26:57 수정됨

    웹서버 띄워서 파일 다운로드 받게 하는거랑 별 차이가 없어보이는데요.

    어떤 차이가 있을까요?


    2
  • 아스키
    9k
    2019-03-02 12:53:08

    멋지시네욧~!

    2
  • 얻으민
    745
    2019-03-02 13:14:46

    // 돈까스


    일반 웹서버 띄워서 받게하는건 저도 하던 방법인데


    1. 이런 일이 자주 있는건 아니라서 그때마다 웹 서버로 받을 수 있도록 코딩을 해줘야함.(한번 코딩해두고 소스를 잘 가지고 있으면 논외입니다.)

    2. 개발자가 아닌 일반인은 웹 서버로 받을 수 있도록 하기 어려움.(GUI 형태로 구현)

    3. 스트림으로 작성할 줄 모르는 사람은 단순 파일 입출력으로 작성할 경우 대용량 파일을 전송하기가 어려움


    이런 사항들 때문에 만들어봤습니다.

    1
  • 앙앙이
    3k
    2019-03-02 19:45:28

      옛날에 젊어 객기 있을때에는 파일 송수신 정도는 그냥 만들줄 알았는데,

    세월이 흘러 직접 만들어 보려고 하니 장난이 아니네요.


    그런 경험이 있기에 이런 도전 응원합니다 ^^



    1
  • 돈까스
    1k
    2019-03-03 10:02:25 작성 2019-03-03 10:03:17 수정됨

    어떤 문제/필요를 상정해서 그것을 해결하는 프로그램을 만드신 것이 훌륭하다고 생각합니다.

    근데 제 생각에는 그냥 웹서버나 FTP를 쓰면 되는데 왜 만드셨을까 하는 생각이 들어서요. (죄송합니다...)


    저도 고객사 쪽에 파일 전달을 위해서 웹서버를 자주 이용하는데요.

    구축 과정에서 코딩은 전혀 없었고, 그냥 아파치를 설치해서 특정 디렉토리에 심볼링 링크를 걸고 패스워드를 걸었습니다.

    DVD 한장 용량 이상은 아직 안해봤습니만, 3-4GB 사이의 파일은 문제가 없었습니다. 

    클라이언트 측에서는 웹서버에 접속하여 ID/패스워드를 넣고(아파치 기본기능) 클릭하여 다운로드 받아가거나,

    wget을 이용해서 받아가고 있습니다.


    코딩을 해야 한다고 말씀하신 것과 스트림으로 작성하지 않으면 대용량 파일을 전송하기 어렵다고 하는 것은 어떤 이유인지 궁금합니다.

    혹시 제가 모르는 부분이 있었는지 기존 방식들에서 어떤 필요가 있기 때문에 작업을 하신 것인지 문의드립니다.

    1
  • pooq
    1k
    2019-03-03 17:10:30

    만드신 앱을 사용하려면 포트포워딩은 충분히 할 줄 알아야하는데,

    포트포워딩을 할줄 알면 ftp나 베리즈웹쉐어즈같은 프로그램으로 충분히 공유할 줄 아는 사람이란거죠.


    2
  • 스텁
    692
    2019-03-03 22:21:53

    기술적으로는 결국 FTP던 HTTP 서버던 기존에 있던 앱이라도

    버튼하나만 눌러서 파일공유가 되는 UI 구성이면 사용자도 있고 개발의 가치도 있습니다.

     

    다 아니더라도 일렉트론 앱 하나 만들어본것만으로도 가치가 있네요

    2
  • 얻으민
    745
    2019-03-04 01:31:22

    // 돈까스

    옳으신 말씀입니다. 웹서버나 FTP 설치하면 해결될 일입니다. 다만 일반 사용자가 웹서버에 올려도 포트포워딩은 마찬가지로 필요하고, FTP도 마찬가지입니다. Wget으로 파일을 받아가는 것도 파일을 받는쪽이 개발을 모르는 사용자라고 하면, 적당하지 않을 것 같습니다.

    코딩이 필요하다고 했던 부분은 대용량 파일을 전송하려고 스크립트를 작성하던 일이 있었는데, 그런 일이 자주 있던 것은 아니다 보니 매번 필요할때마다 코딩을 해서 보냈었습니다.


    // pooq

    Ftp를 사용하려면 포트포워딩도 같이 해야되는데, 그런 경우 사용자는 포트포워딩도 해야되고 ftp도 설치해야됩니다. 설령 둘다 모른다고 하더라도

    1. 포트포워딩만 인터넷 검색으로 하고, 이걸로 전송한다.

    2. 포트포워딩도 하고, FTP도 설치해서 파일을 전송한다.

    두 가지 중에 단일 파일에 대해 전송을 위한거라고 하면 1번이 더 효율적이지 않을까요? 2번으로 가면 파일을 제공하는 사람고 ftp를 설치해야되고, 파일을 받고 싶은 사람은 ftp 계정과 패스워드도 주고 받아서 로그인 해야되는데, 개발을 모르는 일반 사용자가 파일을 받는다고 하면 보내주는 사람이 주는 url로 바로 접속하면 편하게 받을 수 있을 것 같아서 만들어보았습니다.


    단시간에 단순 1개 파일이 아닌, 장시간에 걸쳐 여러 파일을 제공해주려면 당연히 FTP 같은 서비스가 나을겁니다.. 다만 이 프로그램의 목적은 파일 제공하는 입장에선 포트포워딩만 해주면 되고, 제공 받는 입장에서는 url로 접속만 하면 다운로드 받아지게 하기 위해서 만들어본겁니다.


    // 스텁

    버튼하나만 눌러서 파일공유가 되는 UI 구성이면 사용자도 있고 개발의 가치도 있습니다.

    라고 말씀해주셨는데, 제가 딱 생각했던 포인트입니다. 감사합니다.

    0
  • 돈까스
    1k
    2019-03-04 03:34:56

    wget으로 받아가는거야 제가 그렇게 사용했다는 것이지, 링크를 가지고 브라우저로 받아도 되죠.

    제가 궁금한 것은 상대방이 http로 파일을 받아가도록 하는 과정에서 무엇때문에 코딩이 필요한 것인지였습니다.

    저도 필요에 의해서 개발한 것의 가치는 알고 있고 그것에 대해서 쓸모없다고 말씀드리는 것은 아닙니다. :)

    그냥 동일한 문제에 대한 코딩을 할 필요가 없는 방법이 있고,

    그 방법이 만드신 프로그램 보다 사용성에 더 낫지는 않지만, 그렇다고 크게 떨어지지도 않는다고 말씀드린 겁니다.


    저도 개인적인 필요에 의해서 프로그램들을 만들곤 했는데,

    나중에 보니까 대부분의 것들이 이미 만들어져 있었거나 굳이 프로그래밍을 할 필요가 없었던 경험들이 있거든요.

    이런 종류의 글에 그냥 무턱대고 격려만 하는 것도 별로인 것 같고, 나름대로의 진지한 관심의 표현이라고 생각해주세요.

    글쓴분 덕분에 저도 일렉트론이라는 게 무엇인지 알고 갑니다.

    감사합니다.


    1
  • 얻으민
    745
    2019-03-04 11:27:57

    // 돈까스

    넵 저도 그런 기억이 몇번 있네요 ㅎ..

    그래서 만들때는 가급적 이미 있는건 안만들고, 조금이라도 편하고 가볍게 사용할 수 있는지 생각을 해봤습니다..

    건설적인 의견 감사해요 다음에 또 글 올리면 의견 바랍니다~!

    0
  • 똥참으며코딩하기
    18
    2019-03-05 03:06:05

    이런거 좋네요 ㅎㅎ

    대용량 파일 보낼때 베리즈 웹쉐어 많이 썼는데 말이죠

    가끔씩 보내다가 끊기면 처음부터 다시보내야되는 단점이 있는데 이건 어떨지 모르겠네요

    살포시 다운 받아갑니다~!

    1
  • nopain
    60
    2019-03-07 18:12:34

    훌륭하십니다! 

    깔끔하네요 

    Electron으로 개발하면 OS구분없이 배포할 수 있나요? 

    2
  • 얻으민
    745
    2019-03-07 19:34:42

    // nopain


    OS에 의존적인 모듈을 사용하지 않고,

    파일 경로 구분자(윈도우의 \와 리눅스의 /) 등을 고려해주면 OS 구분없이 같은 코드로 작성한 후 코드를 패키징하는 과정에서 옵션만 다르게 주면 해당 OS에 맞는 앱을 만들 수 있습니다.

    https://www.npmjs.com/package/electron-packager#supported-platforms


    0
  • 푸하푸하
    74
    2019-03-08 12:31:46

    궁굼한 점이 있습니다.

    1.소스코드를 보면 파일하나당 포트를 하나 열어서 해당 포트를 통해 스트림으로 파일을 쏴주는 것 같은데

    다중 파일공유를 구현한다면 포트역시 스트림당 하나씩 열어줘야 하는거겠죠??

    2.여러명에게 하나의 링크를 공유하였을 경우 한명이 받고 있는데 여러 사람이 동시적으로 받아도 문제가 없는지요? 노드 js 에 관해 잘몰라서 여쭙니다.

    1
  • 얻으민
    745
    2019-03-08 12:50:45 작성 2019-03-08 12:57:59 수정됨

    2번은 현재 코드로도 전혀 문제 없습니다. 웹 서버를 같은 포트로 제공해도 여러명이 접속할 수 있는 이유와 같습니다.

    1번은 현재 코드에선 불가능합니다. 프로세스를 여러개 실행시켜도 제가 동일 포트를 사용하도록 구현을 해놔서리.. 이 부분은 조만간 파일 여러개 공유할 수 있도록 구현할 예정입니다.

    포트는 하나만 열어도 구현 가능합니다.

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.