2017-10-17 18 views
0

HTTP POST 요청으로 파일을 보내고 FTP를 사용하여 서버의 파일 디렉토리에 파일을 업로드하려고합니다. FTP 커넥터가 파일 디렉토리에 페이로드를 저장하는 것처럼 보입니다. 그러나 이것은 null을 통해 전달되며 빈 파일은 FTP에 의해 디렉토리에 기록됩니다.HTTP 요청으로 파일을 보내고 Mule의 FTP를 통해 파일 서버에 파일을 업로드하는 방법

Postman을 사용하여 ram 및 http 요청의 미디어 유형으로 바이너리/옥텟 스트림으로 성공했지만 파일이 열리지 않고 손상되었을 수 있으며 양식 데이터를 media 유형은 raml 및 http 요청으로 message.inboundAttachments의 키 값 쌍으로 표시되지만 inboundAttachments에서 쓰기 위해 FTP 커넥터를 얻는 방법은 무엇입니까? javax 개체로 표시되지만 파일 디렉터리에 쓰는 중 문제가있는 페이로드로 설정하려고했습니다. 어떻게해야하며 가장 좋은 방법은 무엇일까요? 파일은 파일> = 1이고 다른 파일 형식이 될 수 있습니다. 현재 하나의 파일로 테스트 중입니다.

또한 파일을 쓸 때의 이름은 28f42420-b325-11e7-8ffb-dcb320524153.dat입니다. message.inboundProperties.originalFilename이 null 인 것처럼 이름을 지정하는 방법은 무엇입니까?

Mule 콘솔이 요청에 파일을 보내는 옵션을 제공하지 않아서 Anypoint Studio 6.2와 Mule 3.8.3 및 Postman을 사용하여 http 호출을하고 있습니다. 받는 사람 대답에 언급 한 바와 같이

현재 XML은 API/엔드 포인트를 뮬 여러 파일을 보낼

<flow name="sendFtpFile"> 
    <set-payload value="#[message.inboundAttachments.file]" doc:name="Set Payload"/> 
    <ftp:outbound-endpoint host=${host} port="21" path=${filePath} user=${user} password=${pwd} connector-ref="FTP" responseTimeout="10000" doc:name="FTP"/> 
</flow> 

감사

답변

2

RAML 흐름

/ftp: 
    displayName: FTP Test 
    description: Send file to directory using FTP 
    post: 
     description: Send file 
     body: 
     binary/octet-stream: 
     multipart/form-data: 
     application/x-www-form-urlencoded: 
      properties: 
      file: 
       description: The file to be uploaded 
       required: true 
       type: file 
     responses: 
     200: 
      body: 
      application/json: 

RAML는 정의 할 수 있습니다 아래 게시물 -

편집하거나으로 파일을 변환 할 수 있습니다 읽어

<foreach doc:name="For Each" collection="#[message.inboundAttachments]"> 
     <set-payload value="#[payload.dataSource.content]" doc:name="Set Payload"/> 
     <byte-array-to-string-transformer doc:name="Byte Array to String"/> 
     <logger message="Content :- #[payload]" level="INFO" doc:name="Logger"/> 

</foreach> 

번 : 으로

Send multiple Files in HTTP request using RAML

, 당신이가-각 구조, 아래 같은 것이 유용 할 수있다 사용할 수 있습니다 뮬 API를에서이 파일을 읽을 필요한 다음 세트 - 첨부 파일을

<set-attachment attachmentName="requiredFile.xml" value="#[payload]" contentType="text/xml" doc:name="Attachment"/> 

그리고 를 사용하여 첨부 파일로 요를 추가 필요한 FTP 커넥터으로 보낼 수 있습니다.

+0

감사합니다. 파일 이름을 원래 파일 이름 + 타임 스탬프로 지정하려고합니다. 이 정보를 얻을 수있는 방법이 있습니까? message.inboundProperties.originalFilename 비어 있습니다. – user3165854

+0

# [payload.dataSource.part.fileName]을 사용하여 첨부 파일 이름을 얻습니다. –

+0

도움을 주셔서 감사합니다. Mule에서 파일을 전달하는 방법에 관한 많은 질문이 정리되었습니다. 감사 – user3165854