स्पंदन WEB डाउनलोड विकल्प


12

मैं स्पंदन वेब ऐप बना रहा हूं जो उपयोगकर्ता डेटा से एक फ़ाइल उत्पन्न करना चाहिए। और आउटपुट फाइल डाउनलोड करने का विकल्प है।

लेकिन मुझे कोई विकल्प / पैकेज नहीं मिल रहा है जो स्पंदन वेब के लिए काम करता है :(

क्या कोई व्यक्ति कृपा करके मेरी सहायता करेगा?


आप किस तरह का डेटा CSV, Pdf आदि डाउनलोड करना चाहते हैं?
डेनिज़ बेयर

एक और समस्या जो मुझे हो रही है वह है फ़्लटर और वेब ऐप के लिए सिंगल कोड बेस का उपयोग करना। फ्लटर पर इसे संकलित करने की कोशिश करने वाले dart:htmlप्लगइन्स को पसंद नहीं करते हैं जो नीचे दिए गए उत्तर हैं।
12

क्या यह आपके मामले में @Suragch के लिए सहायक है?
टियागो मार्टिंस पेरेस

1
@TiagoMartinsPeres, हालांकि मैं फायरबेस का उपयोग नहीं कर रहा हूं, लेकिन उत्तर की लिंक में स्रोत कोड दिलचस्प था। धन्यवाद। मैं एक सरल समाधान की उम्मीद कर रहा था, लेकिन फ़्लटर वेब अभी भी बीटा में है। उम्मीद है कि भविष्य में आसान क्रॉस-प्लेटफॉर्म समाधान प्रदान किया जाएगा।
सुरगाच

जवाबों:


3

एक अच्छा समाधान एक नई टैब का उपयोग करके होस्ट की गई फ़ाइल को खोलना है

import 'dart:html' as html;

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

मेरे उपयोग के मामले के लिए अच्छी तरह से फिट बैठता है।


यह एपीके फाइल डाउनलोड करने के लिए काम करता है। यह ऑडियो फ़ाइल डाउनलोड करने के लिए काम नहीं करता है क्योंकि ऑडियो फ़ाइल स्वचालित रूप से खेलना शुरू कर देती है।
सुरगाच

हां, मैं एक .json फ़ाइल डाउनलोड करने का प्रयास कर रहा हूं और यह क्रोम टैब द्वारा भी खोला गया है। यह देखने की कोशिश कर रहा है कि html5 में "डाउनलोड" टैग का उपयोग करने का कोई तरीका है या नहीं।
एडरिकटोर

2

URL डाउनलोड करने के लिए पुनर्निर्देशन के लिए सरल कोड

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

1
चूंकि यह उत्तर बाउंटी अवधि में देरी से आया था, इसलिए बाउंटी की समय सीमा समाप्त होने से पहले मेरे पास इसे आज़माने का समय नहीं है। हालाँकि, मुझे लगता है कि यह काम करता है (लेकिन क्या आप इस बात की पुष्टि कर सकते हैं कि यह ऑडियो फाइल को बिना किसी स्वचालित रूप से डाउनलोड किए?)। मैं यह उत्तर चुन रहा हूं क्योंकि यह समझना आसान है।
सूर्याग

यह विशेष रूप से स्पंदन वेब के लिए है। क्या मोबाइल ऐप के लिए कोई विकल्प है?
रज़ि कल्लेय

एंड्रॉइड में आप फ़ाइल को url से डाउनलोड कर सकते हैं और IO लाइब्रेरी का उपयोग करके इसे अपने फोन स्टोरेज में सेव कर सकते हैं।
vishwajit76

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();
}

अच्छा लगा। मैं देशी जावास्क्रिप्ट में उपयोग किए जाने वाले पैटर्न के बारे में कुछ नहीं जानता, इसलिए मैं इस पर अधिक ध्यान दूंगा।
Suragch


वाह यह एक मुझे बड़ा समय बचा लिया! बहुत बहुत धन्यवाद। यह कोड झटपट में उत्पन्न एक पीडीएफ फाइल को तुरंत डाउनलोड कर सकता है।
निपुणसुधा

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);
    }

क्या होगा यदि ऑडियो फ़ाइल url है 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');
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.