[flutter] 플러터에서의 파일 다운로드 및 업로드 방법

플러터는 크로스 플랫폼 모바일 애플리케이션 개발을 위한 프레임워크로서, 파일 다운로드 및 업로드 기능을 쉽게 구현할 수 있습니다. 이번 글에서는 플러터에서 파일 다운로드 및 업로드를 위한 방법을 알아보겠습니다.

1. 파일 다운로드

플러터에서 파일 다운로드를 구현하기 위해서는 HTTP 패키지를 사용할 수 있습니다. 다음은 파일 다운로드를 위한 예제 코드입니다.

import 'package:http/http.dart' as http;
import 'dart:io';

Future<void> downloadFile(String fileUrl, String savePath) async {
  var response = await http.get(Uri.parse(fileUrl));
  var file = File(savePath);
  
  await file.writeAsBytes(response.bodyBytes);
  print('파일이 다운로드되었습니다.');
}

위 코드에서는 http 패키지를 사용하여 파일의 URL로부터 파일을 다운로드한 후, dart:io 패키지의 File 클래스를 사용하여 파일을 저장합니다. writeAsBytes 함수는 파일 내용을 바이트로 변환하여 저장하는 역할을 합니다.

이제 downloadFile 함수를 호출하여 파일을 다운로드할 수 있습니다.

downloadFile('http://example.com/file/sample.pdf', '/path/to/save/sample.pdf');

위와 같이 파일의 URL과 저장 경로를 인자로 넘겨주면, 해당 파일이 다운로드됩니다.

2. 파일 업로드

플러터에서 파일 업로드를 구현하기 위해서는 http 패키지와 multipart 패키지를 함께 사용할 수 있습니다. 다음은 파일 업로드를 위한 예제 코드입니다.

import 'package:http/http.dart' as http;
import 'package:http_parser/http_parser.dart';
import 'dart:io';

Future<void> uploadFile(File file) async {
  var request = http.MultipartRequest(
      'POST', Uri.parse('http://example.com/upload'));
  
  request.files.add(await http.MultipartFile.fromPath(
      'file', file.path, contentType: MediaType('application', 'pdf')));
  
  var response = await request.send();
  
  if (response.statusCode == 200) {
    print('파일이 업로드되었습니다.');
  } else {
    print('파일 업로드에 실패했습니다.');
  }
}

위 코드에서는 http 패키지의 MultipartRequest 클래스를 사용하여 파일을 업로드하는 요청을 생성합니다. file 변수는 업로드할 파일을 나타내며, fromPath 함수를 사용하여 파일 경로를 지정합니다.

또한 contentType으로 MediaType 클래스를 사용하여 업로드할 파일의 MIME 타입을 설정할 수 있습니다. 위 예제에서는 PDF 파일을 업로드하는 예제로 적절한 MIME 타입을 설정하였습니다. 필요에 따라 MIME 타입을 변경하십시오.

마지막으로, request.send() 함수를 호출하여 파일을 업로드합니다. 응답 상태코드가 200인 경우 파일 업로드가 성공한 것으로 판단합니다.

uploadFile(File('/path/to/file.pdf'));

위와 같이 uploadFile 함수를 호출하여 파일을 업로드할 수 있습니다.

결론

이상으로 플러터에서 파일 다운로드 및 업로드를 구현하는 방법에 대해 알아보았습니다. HTTP 패키지를 사용하여 간편하게 파일 처리를 할 수 있으며, 이를 응용하여 다양한 파일 관련 기능을 개발할 수 있습니다.

참고 자료