에러 짱 많이 고쳤다. 한예슬짱👍
[✔️] 신한 서버 api 연결
[✔️] 현대 NER
[✔️] DocTransformer 소스코드 찾기
flush=True
옵션을 추가하여 강제로 버퍼를 비울 수 있다.업로드된 파일을 받는 post views.py api 함수에서 request.FILES 를 받는 순간 부터 file name too long 에러가 남
os 자체에서 파일 이름 크기가 지정되었을 수 있음, os 세팅 자체는 바꾸기 힘드니까 강제적으로 파일명을 변경 시켜야함
파일이 너무 클 경우 지정된 이름을 사용하는 핸들러 작성
from django.core.files.uploadhandler import FileUploadHandler
import os
import uuid
class CustomFileUploadHandler(FileUploadHandler):
def new_file(self, field_name, file_name, content_type, content_length, charset=None, content_type_extra=None):
# 파일 이름이 너무 긴 경우 처리
if len(file_name) > 255: # 일반적으로 파일 이름 제한은 255자
_, file_extension = os.path.splitext(file_name)
# UUID로 파일 이름을 대체하여 너무 긴 파일 이름을 줄임
file_name = f"{uuid.uuid4()}{file_extension}"
# 새로운 파일 이름으로 설정한 후 기본 처리
super().new_file(field_name, file_name, content_type, content_length, charset, content_type_extra)
def receive_data_chunk(self, raw_data, start):
return raw_data
def file_complete(self, file_size):
return None
from django.http import HttpResponse
from .handlers import CustomFileUploadHandler
def upload_file_view(request):
if request.method == 'POST':
# 커스텀 파일 업로드 핸들러를 추가하여 파일 이름을 처리
request.upload_handlers.insert(0, CustomFileUploadHandler())
if 'file' in request.FILES:
uploaded_file = request.FILES['file']
# 파일이 정상적으로 처리되었는지 확인
return HttpResponse(f"File uploaded successfully: {uploaded_file.name}")
return render(request, 'upload.html')
이슈상황: 인트라넷에 작동하는 A 도커 이미지, 컨테이너, 소스코드가 있음. 근데 소스코드를 수정하고 다시 빌드를 하려고 했더니 인터넷 연결이 차단이 되어 있어서 안됨.
해결:
기존 도커 이미지를 save: docker save -o existing_image.tar <이미지이름>
도커 파일 수정 기본 이미지로 불러온뒤 수정된 소스코드를 copy 해서 빌드하는 도커파일을 생성
# 기존 이미지에서 시작
FROM <기존 이미지 이름>
# 작업 디렉터리 설정 (예시로 /app 디렉터리 설정)
WORKDIR /app
# 수정된 소스코드를 컨테이너 내부로 복사
COPY ./back /app
# 기본 명령어 설정: Django 서버 실행
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
docker commit <컨테이너id> <new image name>
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh sh install-scout.sh
docker scout sbom <이미지id>