ঝাঁকুনি ওয়েবে ডাউনলোড অপশন


12

আমি ফালতু ওয়েব অ্যাপ তৈরি করছি যা ব্যবহারকারীর ডেটা থেকে কোনও ফাইল তৈরি করতে পারে rate এবং আউটপুট ফাইলটি ডাউনলোড করার বিকল্প রয়েছে।

তবে আমি কোনও বিকল্প / প্যাকেজগুলি খুঁজে পাচ্ছি না যা ঝাঁকুনির ওয়েবে কাজ করে :(

কেউ কি দয়া করে আমাকে সাহায্য করতে পারেন?


আপনি কোন ধরণের ডেটা সিএসভি, পিডিএফ ইত্যাদি ডাউনলোড করতে চান?
ডেনিজ বয়ার

আমি আর একটি সমস্যা যাচ্ছি তা হ'ল ফ্লার্ট এবং ওয়েব অ্যাপ্লিকেশনটির জন্য একটি একক কোড বেস ব্যবহার করা। ফ্লুটারে এটি সংকলনের চেষ্টা করা dart:htmlনীচের উত্তরগুলিতে থাকা প্লাগইনগুলি পছন্দ করে না ।
সুরগাচ

কি এই আপনার ক্ষেত্রে @Suragch সহায়ক?
টিয়াগো মার্টিনস পেরেস

1
@ টিয়াগোমার্টিনস পিয়ার্স, যদিও আমি ফায়ারবেস ব্যবহার করছি না, উত্তরের লিঙ্কের উত্স কোডটি আকর্ষণীয় ছিল। ধন্যবাদ. আমি একটি সহজ সমাধানের জন্য আশা করছিলাম, তবে ফ্লাটার ওয়েব এখনও বিটাতে রয়েছে। আশা করি ভবিষ্যতে আরও সহজ ক্রস প্ল্যাটফর্ম সমাধান সরবরাহ করা হবে।
সুরগাচ

উত্তর:


3

হোস্ট করা ফাইলটি একটি নতুন ট্যাবে ব্যবহার করে খোলার পক্ষে একটি ভাল কাজ ound

import 'dart:html' as html;

openInANewTab(url){
  html.window.open(url, 'PlaceholderName');
}

আমার ব্যবহারের ক্ষেত্রে ভাল মানায়।


এটি একটি APK ফাইল ডাউনলোড করার জন্য কাজ করে। এটি অডিও ফাইল ডাউনলোড করার জন্য কাজ করে না কারণ অডিও ফাইলটি স্বয়ংক্রিয়ভাবে খেলতে শুরু করে।
সুরগাচ

হ্যাঁ, আমি একটি .json ফাইল ডাউনলোড করার চেষ্টা করছি এবং এটি ক্রোম ট্যাব দ্বারা খোলারও দরকার। এইচটিএমএল 5 তে "ডাউনলোড" ট্যাগটি ব্যবহার করার কোনও উপায় আছে কিনা তা দেখার চেষ্টা করছেন।
এরাদিক্যাটোর

2

ইউআরএল ডাউনলোড করতে পুনঃনির্দেশের জন্য সাধারণ কোড

import 'dart:html' as html;
void downloadFile(String url){
   html.AnchorElement anchorElement =  new html.AnchorElement(href: url);
   anchorElement.download = url;
   anchorElement.click();
}

1
যেহেতু এই উত্তরটি অনুগ্রহের সময়কালে দেরি করে এসেছিল, অনুগ্রহের মেয়াদ শেষ হওয়ার আগে আমার চেষ্টা করার সময় নেই। যাইহোক, আমি ধরে নেব যে এটি কাজ করে (তবে আপনি কী নিশ্চিত করতে পারেন যে এটি কেবল অটোমেটিক না খালি অডিও ফাইল ডাউনলোড করবে?)। আমি এই উত্তরটি বেছে নিচ্ছি কারণ এটি বোঝা সহজ।
সুরগাচ

এটি বিশেষত উদ্বিগ্ন ওয়েবের জন্য। মোবাইল অ্যাপের বিকল্প নেই?
রাজি কলয়

অ্যান্ড্রয়েডে আপনি ইউআরএল থেকে ফাইল ডাউনলোড করতে পারেন এবং আইও লাইব্রেরি ব্যবহার করে এটি আপনার ফোন স্টোরেজে সংরক্ষণ করতে পারেন।
বিশ্বজিৎ 76

1

ডাউনলোডের ট্রিগার করার একটি উপায় হ'ল "নেটিভ" জাভাস্ক্রিপ্টে ব্যবহৃত সাধারণ প্যাটার্নটিকে অভিযোজিত করা, downloadবৈশিষ্ট্যের সাথে একটি অ্যাঙ্কর উপাদান তৈরি করুন এবং একটি ক্লিক ট্রিগার করুন।

import 'dart:convert';
import 'dart:html';

main() {
  File file = // generated somewhere
  final rawData = file.readAsBytesSync();
  final content = base64Encode(rawData);
  final anchor = AnchorElement(
      href: "data:application/octet-stream;charset=utf-16le;base64,$content")
    ..setAttribute("download", "file.txt")
    ..click();
}

খুশী হলাম। আমি নেটিভ জাভাস্ক্রিপ্টে ব্যবহৃত নিদর্শন সম্পর্কে কিছুই জানি না, তাই আমি এটিতে আরও নজর দেব।
সুরগাচ


বাহ এই আমাকে বড় সময় বাঁচায়! তোমাকে অনেক ধন্যবাদ. এই কোডটি তাত্ক্ষণিকভাবে ফ্লুটারে উত্পন্ন একটি পিডিএফ ফাইলটি ডাউনলোড করতে পারে।
নিপুনসুধ

0

অনুগ্রহের প্রতিক্রিয়া:

কোনও অডিও ফাইলের ক্ষেত্রে এটি ডাউনলোড করার পরিবর্তে খেলতে শুরু করে

আমি ভিডিওর মাধ্যমে একই জিনিস করেছি, তবে আমি নিশ্চিত এটি অডিওর সাথেও কাজ করবে। আমি ধরে নিই, আপনার উত্পন্ন অডিওটি একটি অ্যারে বা ব্লব

    import 'dart:js' as JS;
    import 'dart:html' as HTML;

    const mimeType = 'audio/wav'; // TODO: Pick a right format

    void downloadFile(List chunks) async {
        final blob = HTML.Blob(chunks, mimeType);
        final objectUrl = await HTML.Url.createObjectUrlFromBlob(blob);
        final a = HTML.AnchorElement();
        a.href = item.url;
        a.download = "my_audio_file_${DateTime.now()}.wav";
        HTML.document.body.append(a);
        a.click();
        // Wait for click event to be processed and cleanup
        await Future.delayed(Duration(milliseconds: 100));
        a.remove();
        HTML.Url.revokeObjectUrl(item.videoObjectUrl);
    }

অডিও ফাইলটি ইউআরএল হলে কী হবে http://www.example.com/my_audio.mp3?
সুরগাচ

0

আপনার সাথে url_launcher প্যাকেজ ব্যবহার করতে পারেন url_launcher_web

তাহলে আপনি এটি করতে পারেন:

launch("data:application/octet-stream;base64,${base64Encode(yourFileBytes)}")

সম্পাদনা: আপনি যদি এটি করেন তবে আপনার কোনও প্লাগইন লাগবে না

download.dart:

import 'dart:convert';
// ignore: avoid_web_libraries_in_flutter
import 'dart:html';

void download(
  List<int> bytes, {
  String downloadName,
}) {
  // Encode our file in base64
  final _base64 = base64Encode(bytes);
  // Create the link with the file
  final anchor =
      AnchorElement(href: 'data:application/octet-stream;base64,$_base64')
        ..target = 'blank';
  // add the name
  if (downloadName != null) {
    anchor.download = downloadName;
  }
  // trigger download
  document.body.append(anchor);
  anchor.click();
  anchor.remove();
  return;
}

empty_download.dart:

void download(
  List<int> bytes, {
  String downloadName,
}) {
  print('I do nothing');
}

আমদানি এবং ব্যবহার:

import 'empty_download.dart'
if (dart.library.html) 'download.dart';

void main () {
  download('I am a test file'.codeUnits, // takes bytes
      downloadName: 'test.txt');
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.