멀티업로드 관련 문의

멀티업로드 관련 문의

QA

멀티업로드 관련 문의

본문

<input type="file" name="bf_file" multiple >

멀티 형식으로 첨부를 여러개 첨부하면 

 

1930820179_1646370175.6057.png

1930820179_1646370206.4273.png

 

위 이미지처럼 File 형태로 배열이 만들어져서 업로드 저장까지는 해결했습니다

문제는 수정하려고 할때인데요...

수정페이지 들어가서  첨부 파일 관련 디비 정보를 불러와서 어떻게 만들어야 할지 감이 안와서요...

조언좀 해주실분 계신가요..

 

https://developer.mozilla.org/en-US/docs/Web/API/File

File 관련 함수가 있는거 같은데 이걸 어떻게 써먹는건지 모르겠습니다 ㅠㅠ

샘플

var file = new File(["foo"], "foo.txt", {
  type: "text/plain",
});

위 샘플로 동일하게 하면  위 File 배열이 만들어지긴 하는데

첫번째 값 ["foo"] 이부분에 뭘 넣어야 할지 모르겠어서요 

두번째는 파일명같아서  디비에 잇는 파일명 넣음될거같고...

type 부분도  첨부 형식에 맞춰 넣음 될거같고...

 

조언좀 부탁드립니다~~

 

 

이 질문에 댓글 쓰기 :

답변 1

그누보드는 파일 업로드시 배열로 순차적으로 파일을 받아 처리하고 있습니다

 

멀티 업로드 형태로 하면 하나의 파일 업로드에도 갯수에 따라 0, 1, 2의 배열을 보낸것과 동일해집니다

db에서는 g5_board_file에 wr_id(게시글 아이디), bf_no(파일 순서, 배열의 순서와 동일)로 저장 되구요.

다만 수정시에 bf_name[]의 이름값을 가진 인풋태그가 있는경우 0부터 시작하게 됩니다.

0에 이미 업로드가 되어있어도, 그누보드에서는 이미 업로드 된 배열에 또 다시 요청이 들어오면 기존 파일을 지우고 덮어씌우는 형태로 되어있기 때문에 해당부분을 예외처리해주셔야하며,

마찬가지로  멀티업로드의 경우, 삭제시에도 중간 배열을 삭제한다고 해서 중간 배열을 공란으로 남기는게 아니라 빈공간을 채워지는 형태로 가기 때문에 의도하지 않은 파일이 덮어씌워지고 삭제 됩니다.

결론을 말하자면, 그누보드의 파일 저장 형태는 구조상으로 다중업로드를 업로드하는데는 문제가 없으나 수정하고 삭제하는데에는 여러가지 문제가 발생하는 형태라 볼 수 있습니다.

 

그누보드의 파일업로드를 아예 전체적으로 다 수정하시거나, 또는 수정이나 삭제시에만 구조에 맞게 프론트단, 또는 백단에서 수정해주셔야 합니다.

답변 감사합니다~
첨부 파일 순서가 0,1,2,3 으로 되다보니 삽질좀 했네요

일단 수정부분은 스크립트에서
아래처럼 파일 개수만큼 돌려서 담은 다음 넘겨서 어찌어찌 수정되게 했네요
아이고 빡시라 ㅠ

let tmpFile = new DataTransfer();
for(파일 개수만큼 루프){
 fetch(파일경로)
    .then((res) => res.blob())
    .then((myBlob) => {
        let file_signdate = new Date(파일생성일);
        tmpFile.items.add(
            new File([myBlob], item.source, {
                lastModified: file_signdate.getTime(),
                lastModifiedDate: file_signdate,
            })
        );
    });
}

fech를 루프안에다 넣고 하는게 맞는건지 모르겠는데 우선 기능은 작동하니 패스;;

답변을 작성하시기 전에 로그인 해주세요.
전체 2,662
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT