첨부파일을 서버 업로드

VBA
작성자
권원재
작성일
2021-11-27 16:52
조회
157
엑셀버전 : 엑셀2016

운영체제 : 윈도우10

이미지를 서버페이지쪽으로 HTTP Post 방식 업로드 인데요,

호출하여,  aaa.png를 업로드하면,   원본: 111244KB   서버 업로드: 94363KB 로 작게 업로드 되면서, 실제 이미지가 깨져서 업로드 되어,

사진이 까맣게 보입니다.  도저히 원인을 모르겠습니다. 아시는 분, 부탁드려요. 사례하겠습니다.

'호출하는 부분 #####

PicLoc = "D:\sms\aaa.png"
UploadFile "http://with114.com/sms/curl_send_file.php", PicLoc, "image"

'파일 업로드 함수  Upload file using input type=file ######################
Sub UploadFile(DestURL As String, FileName As String, _
Optional ByVal FieldName As String = "File")
Dim sFormData As String, D As String

'Boundary of fields.
'Be sure this string is Not In the source file
'Const Boundary As String = "---------------------------0123456789012"
Const Boundary As String = "--bound"

'Get source file As a string.
sFormData = GetFile(FileName)    '<=== ##### 파일을 문자열 형태로 읽어올때, 잘못읽어 오는듯

'Build source form with file contents
D = "--" + Boundary + vbCrLf
D = D + "Content-Disposition: form-data; name=""" + FieldName + """;"
D = D + "filename=""" + FileName + """" + vbCrLf
D = D + "Content-Type:image/png" + vbCrLf + vbCrLf
D = D + sFormData
D = D + vbCrLf + "--" + Boundary + "--" + vbCrLf

'Post the data To the destination URL
IEPostStringRequest DestURL, D, Boundary

End Sub

'sends URL encoded form data To the URL using IE
Sub IEPostStringRequest(URL As String, FormData As String, Boundary As String)
'Create InternetExplorer
Dim WebBrowser: Set WebBrowser = CreateObject("InternetExplorer.Application")

'You can uncoment Next line To see form results
WebBrowser.Visible = True

'Send the form data To URL As POST request
Dim bFormData() As Byte
ReDim bFormData(Len(FormData) - 1)
bFormData = StrConv(FormData, vbFromUnicode) 'vbFromUnicode
'bFormData = FormData '###
WebBrowser.Navigate URL, , , bFormData, _
"Content-Type: multipart/form-data;charset=UTF-8; boundary=" + Boundary + vbCrLf
Do While WebBrowser.Busy
'Sleep 10
Application.Wait 3
DoEvents
Loop
WebBrowser.Quit
End Sub

'read binary file As a string value  ###################  파일을 문자열형태로 읽어오는 부분
Function GetFile(FileName As String) As String
Dim FileContents() As Byte, FileNumber As Integer
ReDim FileContents(FileLen(FileName) - 1)
FileNumber = FreeFile
Open FileName For Binary As FileNumber
Get FileNumber, , FileContents
Close FileNumber
GetFile = StrConv(FileContents, vbUnicode)

End Function

회원등급 : 2레벨
포인트 : 36 EP
총질문 : 1 개 (마감율 : 0%)
채택답변 : 0 개
전체 1

  • 2021-11-28 19:44

    그림파일 업로드는 base64 인코딩 후 하시면 됩니다.

    GetFile을 아래 코드로 수정해보세요

    How to use VBA to convert a file to Base64 | by Cain Hill | cainhill | Medium

    Public Function ConvertFileToBase64(strFilePath As String) As String
    
        Const UseBinaryStreamType = 1
    
        Dim streamInput: Set streamInput = CreateObject("ADODB.Stream")
        Dim xmlDoc: Set xmlDoc = CreateObject("Microsoft.XMLDOM")
        Dim xmlElem: Set xmlElem = xmlDoc.createElement("tmp")
        
        streamInput.Open
        streamInput.Type = UseBinaryStreamType
        streamInput.LoadFromFile strFilePath
        xmlElem.dataType = "bin.base64"
        xmlElem.nodeTypedValue = streamInput.Read
        ConvertFileToBase64 = Replace(xmlElem.Text, vbLf, "")
        
        Set streamInput = Nothing
        Set xmlDoc = Nothing
        Set xmlElem = Nothing
        
    End Function

     


전체 5,151
번호 카테고리 제목 작성자 작성일 추천 조회
알림
하루 딱 "1분", 진짜 쓰는 엑셀 꿀팁 👉 "오빠두엑셀" 인스타그램 오픈! (28)
트로피 오빠두엑셀 | 2021.10.12 | 추천 22 | 조회 770
트로피 오빠두엑셀 2021.10.12 22 770
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (21)
오빠두엑셀 | 2021.10.28 | 추천 28 | 조회 2400
트로피 오빠두엑셀 2021.10.28 28 2400
26146 VBA
New 텍스트 1 행씩 자동입력 및 표 2개 합치는 방법 첨부파일 (1)
마운틴 | 02:38 | 추천 0 | 조회 15
마운틴 02:38 0 15
26144 함수/공식
New now()함수로 얻은 최초의 시간을 상수로 사용하고 싶습니다. (1)
SAFETY.RKTL | 01:09 | 추천 0 | 조회 15
SAFETY.RKTL 01:09 0 15
26143 VBA
New 엑셀 타이머 종료시 알림음 출력 가능한가요? 첨부파일 (1)
을지지뢰 | 00:59 | 추천 0 | 조회 15
을지지뢰 00:59 0 15
26141 함수/공식
New 다중 유효성검사 수식관련문의 첨부파일
hyun944@naver.com | 00:25 | 추천 1 | 조회 16
hyun944@naver.com 00:25 1 16
26135 함수/공식
New 필터 기능 대체 함수 첨부파일
sio**** | 2022.01.19 | 추천 -1 | 조회 22
sio**** 2022.01.19 -1 22
26126 VBA
New 엑셀 타이머 런타임 오류해결 좀 부탁드립니다. 첨부파일 (2) 답변완료
을지지뢰 | 2022.01.19 | 추천 0 | 조회 38
을지지뢰 2022.01.19 0 38
26122 함수/공식
New 불규칙한 숫자만큼 반복되는 데이터 입력 ,, 고수님들 도와주세요 ㅠ_ㅠ 첨부파일 (3)
응빙 | 2022.01.19 | 추천 0 | 조회 39
응빙 2022.01.19 0 39
26120 VBA
New 그림단추 구현 VBA 첨부파일 (2) 답변완료
007 | 2022.01.19 | 추천 0 | 조회 44
007 2022.01.19 0 44
26118 VBA
New VBA 고수 분들 보시면 제발 도와주세요. 첨부파일 (3)
new_hwan | 2022.01.19 | 추천 0 | 조회 44
new_hwan 2022.01.19 0 44
26113 기능/도구
New 자동필터 검색 누락 첨부파일 (6) 답변완료
김정열 | 2022.01.19 | 추천 0 | 조회 41
김정열 2022.01.19 0 41
26105 함수/공식
New "월"을 기입하면 전월 당월 매출이 나오게 하고싶은데 도와주세요 ㅠ (10) 답변완료
따뜻한아메리카노 | 2022.01.19 | 추천 0 | 조회 55
따뜻한아메리카노 2022.01.19 0 55
26104 VBA
New 자료찾기 vba 문의드립니다. (5) 답변완료
ㅈㄱㄹ | 2022.01.19 | 추천 0 | 조회 43
ㅈㄱㄹ 2022.01.19 0 43
26089 기능/도구
New 한 시트에 다수의 규칙이 적용되어있을 때 항목을 정리하는 방법을 찾고 있습니다. 첨부파일 (6) 답변완료
피단 | 2022.01.18 | 추천 0 | 조회 44
피단 2022.01.18 0 44
26087 함수/공식
New vlookup 관련? 같은 값일 때 그 행의 값을 불러오기 첨부파일 (3) 답변완료
키몽쓰 | 2022.01.18 | 추천 0 | 조회 70
키몽쓰 2022.01.18 0 70
26085 함수/공식
New 엑셀 함수 궁금해요! 첨부파일 (3)
양킴 | 2022.01.18 | 추천 0 | 조회 52
양킴 2022.01.18 0 52
26079 함수/공식
New 도와주세요 예전에 잠깐 본적이 있는 강의인데 못찾겠어요 (1)
딸기아빠 | 2022.01.18 | 추천 0 | 조회 38
딸기아빠 2022.01.18 0 38
26078 함수/공식
New sumif 오류 관련 첨부파일 (3)
논바닥 | 2022.01.18 | 추천 0 | 조회 37
논바닥 2022.01.18 0 37
26068 함수/공식
New 다른쉬트 값 불러 오기 (VLOOKUP 안될 시) 첨부파일 (3)
벗님들 | 2022.01.18 | 추천 -1 | 조회 67
벗님들 2022.01.18 -1 67
26067 함수/공식
New 도와주세요! 목록 별 수량 합산이 필요한데 가능한지 확인 부탁 드릴게요! 첨부파일 (10) 답변완료
monom | 2022.01.18 | 추천 0 | 조회 54
monom 2022.01.18 0 54
26058 기능/도구
New 자동필터 복사 범위 풀림 오류 (1)
허영진 | 2022.01.18 | 추천 0 | 조회 39
허영진 2022.01.18 0 39
26050 함수/공식
New 행과 열의 합의 함수를 알고 싶어요! (3)
Goldhajin | 2022.01.18 | 추천 1 | 조회 65
Goldhajin 2022.01.18 1 65
26041 VBA
New 일정시간이 지나면 MsgBOX로 알림창이 뜨게 하고싶습니다. (4) 답변완료
을지지뢰 | 2022.01.17 | 추천 0 | 조회 62
을지지뢰 2022.01.17 0 62
26035 함수/공식
New 특정날짜와 시간 고정해서 데이터 추출방법 도와주세요 (5)
박현욱 | 2022.01.17 | 추천 0 | 조회 48
박현욱 2022.01.17 0 48
26033 함수/공식
New 필터 함수를 인덱스 매치 함수로 변환하는 어려움 첨부파일 (4) 답변완료
미르 | 2022.01.17 | 추천 0 | 조회 41
미르 2022.01.17 0 41
26030 함수/공식
New 원본표에서 일정 조건의 내용을 추출하여 새로운 표에 자료 넣기 첨부파일 (2)
알면서 | 2022.01.17 | 추천 0 | 조회 39
알면서 2022.01.17 0 39
26029 기능/도구
New 필터에서 상하위 % 추출 안됨 오류 첨부파일 (3)
알면서 | 2022.01.17 | 추천 0 | 조회 26
알면서 2022.01.17 0 26
26026 함수/공식
New 한 셀에 입력된 문장 중 조건에 만족하는 문장 개수 함수 (5)
삐약이 | 2022.01.17 | 추천 0 | 조회 41
삐약이 2022.01.17 0 41
26025 기능/도구
New 셀 내용을 지우면 특정 셀 내용도 같이 삭제되는 기능? 첨부파일 (3) 답변완료
올리주인 | 2022.01.17 | 추천 1 | 조회 51
올리주인 2022.01.17 1 51
26023 VBA
New VBA 사용자정의폼 show 0 명령어 (1) 답변완료
병욱 | 2022.01.17 | 추천 0 | 조회 42
병욱 2022.01.17 0 42
26022 VBA
New 거래처별 파일 나누기 첨부파일
silli**** | 2022.01.17 | 추천 0 | 조회 44
silli**** 2022.01.17 0 44