[flutter] pretty_dio_logger를 활용한 파일 업로드 및 다운로드 처리

pretty_dio_loggerDio 클라이언트의 네트워크 요청 및 응답을 보기 좋게 로깅해주는 Flutter 패키지입니다. 이 패키지를 사용하여 파일 업로드 및 다운로드를 처리하는 방법에 대해 알아보겠습니다.

먼저, pubspec.yaml 파일에 다음과 같이 pretty_dio_logger 패키지를 추가해줍니다.

dependencies:
  pretty_dio_logger: ^2.0.0

그다음, 패키지를 설치하기 위해 터미널에서 아래 명령어를 실행합니다.

flutter pub get

파일 업로드

파일을 업로드하기 위해서는 FormData를 이용해야 합니다. 아래는 Dio를 사용하여 파일을 업로드하는 예제 코드입니다.

import 'package:dio/dio.dart';
import 'package:pretty_dio_logger/pretty_dio_logger.dart';

void uploadFile() async {
  Dio dio = Dio();
  dio.interceptors.add(
    PrettyDioLogger(
      requestHeader: true,
      requestBody: true,
      responseBody: true,
      responseHeader: true,
      error: true,
    ),
  );

  FormData formData = FormData.fromMap({
    'file': await MultipartFile.fromFile('파일 경로'),
  });

  try {
    Response response = await dio.post(
      '업로드 URL',
      data: formData,
    );
    print(response.data);
  } catch (e) {
    print(e);
  }
}

파일 다운로드

파일을 다운로드하는 경우에도 Dio를 사용하여 download 메서드를 호출하면 됩니다. 아래는 파일을 다운로드하는 예제 코드입니다.

void downloadFile() async {
  Dio dio = Dio();
  dio.interceptors.add(
    PrettyDioLogger(
      requestHeader: true,
      requestBody: true,
      responseBody: true,
      responseHeader: true,
      error: true,
    ),
  );

  try {
    Response response = await dio.download(
      '다운로드 URL',
      '저장할 파일 경로',
      onReceiveProgress: (received, total) {
        if (total != -1) {
          print((received / total * 100).toStringAsFixed(0) + '%');
        }
      },
    );
    print(response.data);
  } catch (e) {
    print(e);
  }
}

pretty_dio_logger를 사용하여 Dio로 파일 업로드 및 다운로드를 처리하면 네트워크 요청과 응답을 쉽게 로깅하고 디버깅할 수 있습니다.