파일 다운 로드 하는 방식



파일 다운로드 방식에는 url 링크에서 직접 파일을 받는 방식과
웹페이지 안에서 클릭하여 받는 방식 있다.


파일 형식


plain text


file


image


sound


기타방식 방식


파일 전송방법

현재 웹페이지에 데이타를 직접 작성하는 방법.
다른 서버에 파일을 두고 링크만 공유하는 방법.



접근방법


한 페이지 방식 / 복수 페이지 방식

url 접근 방식parameterurl 을 작성하고 누구나 그 url 에 접근하면 바로 다운로드 되는 방식.
url 파라미터를 사용.
누구가 접근 가능하여 보안상 문제가 없는 경우 
사이트 클릭 방식 1geturl 에 접근하면 이미 만들어져 있는 경우. 파일을 바로 접근함여.
버턴이나, 링크에 파일이 이미 저장되어 있음
request.GET.get('page') != "ZIP"

사이트 클릭 방식 2post버턴이나 링크를 클릭했을 때 서버와 연결하여 상호작용하여 생성하는 방식
data = request.body.decode('utf-8')

datas = data.split('&')



방법

읽기 / 아무것도 없는 상태에서 메모리 / 업로드한 파일 /
3가지를 역어서 한가지 방식 생성

방법에 대해서

읽기메모리에 생성

서버에 미리 저장한 파일을 가져오기
새로운 파일을 생성


zip 파일 만들기

심플하게 두 가지 방법만 알면된다.

서버에 있는 파일 불러오기메모리에서 새롭게 파일을 생성
서버에 이미 존재한 파일을 패스로 입력하여 추가하기

zip.write()
메모리에서 추가할 경우. 데이타는 모두 바이너리 방식을 사용한다.

메모리에서 작성하는 경우
zip.writestr(  AAA,  BBB )

AAA 는 파일이름과 형식
BBB 는 바이너리 데이타를 입력한다.

텍스트나, 이미지, 사운드등 모두 이경에 해당한다.

outputImage = io.BytesIO()






형식에 대해서


data:audio/mp3;base64, 
같은 형식을 제대로 지정해 주지 않으면 맥의 사파리같은 브라우져에서 제대로 동작하지 않는 경우가 있다.
윈도우에서는 다운로드에 문제가 발생하지 않지만, 사파리에서는 확장자를 변환하거나, 이름과 확장자사이에 별도의 이름을 추가하는 경우가 발생한다. 

한글과 일본어등에서 사용한 스페이스키가 + 로 변환되는 에러


설명


def convertURLunquote(setParameter):
    # html form : send string error excapte
    # ERROR solution = space key convert "+"
    # %2B%2B%2B+%ED%95%9C%EA%B8%80%EB%90%98%E > ascii
    getString = unquote(PARAMETER[setParameter].replace('+', ' '))
    print(getString)
    return getString