# 해당 디렉토리에 파일을 저장해 주는 함수
def save_uploaded_file(directory, file) :
# 1. 위의 directory가 있는지 확인 후 없으면 새로 생성
if not os.path.exists(directory) :
os.makedirs(directory)
# 2. 파일을 이 디렉토리 안에 저장한다.
with open(os.path.join(directory, file.name) , "wb") as f :
f.write(file.getbuffer())
# 3. 파일 저장 성공했으니까 화면에 보여준다
return st.success(f"{directory}에 {file.name}이 저장됐습니다.")
-> 해당 디렉토리에 파일을 저장해주는 함수 정의
def main() :
st.title("파일 업로드 프로젝트")
# sidebar = 왼쪽 사이드 바 사용
choice = st.sidebar.selectbox("메뉴", ["Image","CSV"])
if choice == "Image" :
st.subheader("이미지 파일 업로드")
# file_uploader(이름(제목) , type=파일타입)
file = st.file_uploader("이미지파일을 업로드하세요", type=["jpg","jpeg","png"])
# 파일이 업로드 되었을 때
if file is not None :
# 파일명이 같으면 덮어쓰기 때문에 새로운 이름을 만든다.
current_time = datetime.now()
# isoformat() = 문자열로 바꿔줌
file.name = current_time.isoformat().replace(":", "_").replace(".", "_") + ".jpg"
save_uploaded_file("tmp", file)
# 웹에 저장된 이미지파일 띄우기
img = Image.open(file)
st.image(img)
elif choice == "CSV" :
st.subheader("CSV 파일 업로드")
file = st.file_uploader("CSV 파일 업로드", type=["csv"])
# 파일이 업로드 되었을 때
if file is not None :
# 파일명이 같으면 덮어쓰기 때문에 새로운 이름을 만든다.
current_time = datetime.now()
# isoformat() = 문자열로 바꿔줌
file.name = current_time.isoformat().replace(":", "_").replace(".", "_") + ".csv"
save_uploaded_file("csv", file)
# csv 파일을 데이터프레임으로 읽어서 웹에 보여준다.
df = pd.read_csv(file)
st.dataframe(df)
-> sidebar = 화면 좌측 사이드바
-> st.file_uploader("내용" , type=[업로드 가능한 파일의 확장자])
파일명이 같으면 덮어쓰기 되어버리기 때문에, 파일명 + 업로드한 시간으로 새로운 파일명을 만들어 저장한다.
-> isoformat() = 타입을 문자열로 바꿔주는 함수, replace() = 문자 바꾸는 함수
결과 1 . 이미지 파일 업로드 했을 때
결과 2 . csv 파일 업로드 했을 때