【问题标题】:move a downloaded file from python backend(Rest API) to /storage/emulated/0/Download in flutter将下载的文件从 python 后端(Rest API)移动到 /storage/emulated/0/Download in flutter
【发布时间】:2021-01-21 07:19:27
【问题描述】:

基本上我会在移动应用程序中提供一个输入字段,用户将在其中粘贴 YouTube 网址并将网址发送到后端 Rest API,Rest API 将下载视频。问题是视频应该被下载到这个位置/storage/emulated/0/下载移动存储

错误,视频正在后端下载。即在我的本地机器上而不是移动存储位置上

用于下载视频的 API 代码

from flask import Flask, request, jsonify
from pytube import YouTube
import os

app = Flask(__name__)


@app.route('/Youtube', methods=["POST"])
def youtube():
    youtube_link_request = request.get_json(force=False, silent=False, cache=True)
    print(youtube_link_request)
    youtube_link = youtube_link_request['link']
    downloads = youtube_link_request['path']
    print(downloads);
    yt = YouTube(youtube_link).streams.first().download()
   ## YouTube(youtube_link).streams.first().download() will starting downloading the video
    views = YouTube(youtube_link).views
    thumbnail = YouTube(youtube_link).thumbnail_url
    title = YouTube(youtube_link).title
    # streams_data = yt.streams.first().download()
    # streams = []
    # for stream in streams_data:
    #     stream_info = stream
    #     streams.append(stream_info.type)
    return jsonify({"Data": "successful completed",
                    "views": views,
                    "thumbnail": thumbnail,
                    "title": title,

                    }), 200


if __name__ == "__main__":
    app.run(debug=True)

除了颤振代码

 RaisedButton(
                onPressed: () async {
                  final PermissionHandler _permissionHandler =
                      PermissionHandler();
                  var result = await _permissionHandler
                      .requestPermissions([PermissionGroup.storage]);

                  // var dir = await
                  if (_formkey.currentState.validate()) {
                    if (result[PermissionGroup.storage] ==
                        PermissionStatus.granted) {
                      var dirpath =
                          await ExtStorage.getExternalStoragePublicDirectory(
                              ExtStorage.DIRECTORY_DOWNLOADS);

                      final UrlModel = await passInfo(urlTextController.text);
                      // _loading ? LinearProgressIndicator() : _urlModel;

                      setState(() {
                        _loading = !_loading;
                        _urlModel = UrlModel;
                        views = _urlModel.views;
                        title = _urlModel.title;
                        thumbnail = _urlModel.thumbnail;
                      });
                      print(dirpath);
                    }
                    // print(title);
                    Fluttertoast.showToast(
                        msg: "${_urlModel.title}",
                        toastLength: Toast.LENGTH_SHORT,
                        gravity: ToastGravity.CENTER,
                        timeInSecForIosWeb: 1);
                  } else {
                    Fluttertoast.showToast(
                        msg: "Error",
                        toastLength: Toast.LENGTH_SHORT,
                        gravity: ToastGravity.CENTER,
                        timeInSecForIosWeb: 1);
                  }
                },
                child: Text('Submit'),
              ),

【问题讨论】:

  • 你得到什么错误信息?
  • 错误是视频正在后端下载。即在我的本地机器上而不是移动存储位置上
  • 你可以查看这个答案:stackoverflow.com/a/66390687/6875197

标签: python-3.x flutter flask


【解决方案1】:

对我来说这看起来很合乎逻辑,你需要运行一个像Nginx 这样的网络服务器并将所有下载的文件复制到你的网络服务器根目录,然后你的服务器主机地址和文件的地址,所以它会是这样的server_ip:server_port/name_of_the_file_downloaded.mkv,提供给flutter app,用户下载到/storage/emulated/0/Download

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-03
    • 2021-05-30
    • 2021-07-01
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多