রিসোর্স ডকুমেন্ট হিসাবে ব্যাখ্যা করা হয়েছে তবে এমআইএমআই টাইপ অ্যাপ্লিকেশন / জিপ দিয়ে স্থানান্তরিত হয়েছে


199

ক্রোম 12.0.742.112 এর সাথে, যদি আমি নিম্নলিখিত শিরোনামগুলির সাথে পুনঃনির্দেশ করি:

HTTP/1.1 302 Found 
Location: http://0.0.0.0:3000/files/download.zip
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
X-Ua-Compatible: IE=Edge
X-Runtime: 0.157964
Content-Length: 0
Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)
Date: Tue, 05 Jul 2011 18:42:25 GMT
Connection: Keep-Alive

যা অনুসরণ করলে নিম্নলিখিত শিরোনামটি প্রদান করে:

HTTP/1.1 200 OK 
Last-Modified: Tue, 05 Jul 2011 18:18:30 GMT
Content-Type: application/zip
Content-Length: 150014
Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)
Date: Tue, 05 Jul 2011 18:44:47 GMT
Connection: Keep-Alive

ক্রোম পুনর্নির্দেশ করবে না বা পূর্ববর্তী পৃষ্ঠাটি পরিবর্তন করবে না, এটি কেবল কনসোলে নিম্নলিখিত সতর্কতাটির প্রতিবেদন করবে:

রিসোর্স ডকুমেন্ট হিসাবে ব্যাখ্যা করা হয়েছে তবে এমআইএমআই টাইপ অ্যাপ্লিকেশন / জিপ দিয়ে স্থানান্তরিত হয়েছে।

ফায়ারফক্সে প্রক্রিয়াটি সঠিকভাবে কাজ করে, এবং যদি আমি একটি নতুন ট্যাব খুলি এবং সরাসরি যান তবে ক্রোমেও ঠিকঠাক কাজ করে http://0.0.0.0:3000/files/download.zip। আমি কি কিছু ভুল করছি, বা এটি কি ক্রোমের বাগ / চিকিত্সা?


উত্তর:


168

আপনি আপনার <a> ট্যাগে এইচটিএমএল 5 ডাউনলোডের বৈশিষ্ট্যটি নির্দিষ্ট করতে পারেন ।

<a href="http://example.com/archive.zip" download>Export</a>

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download


3
"ডাউনলোড" বৈশিষ্ট্যটি যেমন বা অন্য কোনও ব্রাউজারে সমর্থন করে না not আপনার যদি অন্য কোনও বিকল্প থাকে তবে দয়া করে আমাকে সহায়তা করুন
রিনিশ খুন্ট

3
এটি ক্রোমকে সংশোধন করে তবে অন্যান্য ব্রাউজারগুলিকে ভেঙে দেয়। আমার অ্যান্ড্রয়েড ফোনগুলি এই জাতীয় লিঙ্ক থেকে ডাউনলোড করবে না।
বেটি

38
দীর্ঘশ্বাস. এই 'ফিক্স' সর্বাধিক ব্রাউজারদের জন্য কাজ করে না - কেবল ক্রোম। এবং এটি ২০১ 2016, সুতরাং শীঘ্রই যে কোনও সময় এটির আশা করবেন না।
20

2
ক্রোম 2019 এ কোনও পার্থক্য তৈরি করে না
মাইকেল রজার্স

16
@ সমস্ত 2035 (আমি ভবিষ্যত থেকে এসেছি) এবং এটি সমর্থন করার মতো কোনও কম্পিউটার নেই।
আলী ফরহৌদি

34

আপনার অনুরোধ শিরোনামে, আপনি প্রেরণ করেছেন Content-Type: text/htmlযার অর্থ আপনি প্রতিক্রিয়াটিকে HTML হিসাবে ব্যাখ্যা করতে চাই। এখন এমনকি সার্ভার আপনাকে পিডিএফ ফাইলগুলি প্রেরণ করলেও আপনার ব্রাউজারটি এটি এইচটিএমএল হিসাবে বোঝার চেষ্টা করে। এটাই সমস্যা। কারণটি কী হতে পারে তা দেখার জন্য আমি অনুসন্ধান করছি। :)


আমি এটি Content-Type: application/zipকোনও প্রকার ব্যয় না করে প্রেরণের চেষ্টা করেছি , এটি এখনও এটি একটি 'নথি' হিসাবে প্রক্রিয়া করার চেষ্টা করে। জিপ ইউআরএলটি আমার অ্যাপ্লিকেশনটিতে গতিশীল এটি সম্ভবত এটিও উল্লেখ করা মূল্যবান, তাই এটি ক্যাশে করার সাথে কিছুই করার নেই।
অ্যাশলে উইলিয়ামস 19

1
ধন্যবাদ! সম্ভবত ক্রোমের Acceptঅনুরোধ শিরোনামটি প্রেরণে পাঠানোর কিছু হতে পারে text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8? আমি একেবারে এখানে স্ট্যাম্পড, আমি সত্যিই আছি!
অ্যাশলে উইলিয়ামস

5
না, এর text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8একটি অংশ রয়েছে যা বলছে যে ক্রোম প্রায় সব কিছু গ্রহণ করে ( */*)।
সা Saeedদ নেমতি

3
আপনি কি বিষয়ে কথা হয়? প্রশ্নটিতে কোনও অনুরোধ শিরোনাম নেই। উভয়ই প্রতিক্রিয়া শিরোনাম।
ডাবলডাউন

1
এবং আমি এখানে বসে ভাবছি কেন এটি উত্তর হওয়া উচিত তবে কোনও মন্তব্য নয়?
ড্যাশবোর্ড

24

পিডিএফ ফাইল (এমআইএমআই টাইপ অ্যাপ্লিকেশন / পিডিএফ) পরিবেশন করার সময় আমি এই সমস্যাটি অনুভব করেছি এবং বিষয়বস্তু-ডিসপোজিশন শিরোনামটি সেট করে এটি সমাধান করেছি, যেমন:

Content-Disposition: attachment; filename=foo.pdf

আশা করি এইটি কাজ করবে.


11
তবে এটা কোথায় লিখবেন?
হুড

4
@ কোডার আপনি নিজের ওয়েবসারভার থেকে এই জাতীয় শিরোনাম যুক্ত করেন। আপনি কী ব্যবহার করছেন তা নিশ্চিত নন, সুতরাং আরও তথ্য দেওয়া শক্ত it's আপনি আপনার সার্ভারের জন্য কোন ভাষা বা কাঠামো ব্যবহার করছেন?
ইভান

7
এটি আমাদের শিরোনামে রাখুন তবে ক্রোম এখনও সতর্কবার্তাটি ছুঁড়েছে
অ্যাডাম রেইস

ক্রোম সংস্করণ 76.0.3809.132 (অফিসিয়াল বিল্ড) (-৪-বিট) এর সাথে আমার ইতিমধ্যে শিরোনাম সংযুক্ত রয়েছে
ওমর আসলাম

22

আমি ঠিক করেছি ... একটি নতুন ট্যাব খোলার মাধ্যমে।

এটি কেন কাজ করছে না আমি পুরোপুরি নিশ্চিত নই, তবে ক্রোম কীভাবে কোনও পৃষ্ঠায় একাধিক ডাউনলোডের সাথে ডিল করে, তার সাথে এটির কিছু করার থাকতে পারে, সম্ভবত এটি মনে হয়েছিল যে তারা স্প্যাম এবং কেবল তাদের এড়িয়ে গেছে।


6
আপনি "একটি নতুন ট্যাব খুললেন" বলতে কী বোঝায় ??? আপনি ম্যানুয়ালি একটি নতুন ব্রাউজার উইন্ডো খোলেন এবং সেখানে ডাউনলোডের ইউআরএল আটকালেন?
টনি আর

2
হ্যাঁ অবশ্যই. আমি ধরে নিয়েছি এটি নির্দিষ্ট ট্যাবের অ্যাপ্লিকেশন-রাজ্যের একটি বাগ was
অ্যাশলে উইলিয়ামস

52
আমি ব্যবহারকারীটি একটি নতুন ট্যাব খোলার প্রত্যাশা করব না ... এবং কোনও ফাইল মার্জিতের জন্য ডাউনলোড করার জন্য আমি কোনও খুলতে পেলাম না।
ইয়াসির এন্নাজক

24
@ জোরাম এট। অল। - ডাউনলোডের জন্য একটি ট্যাব খোলার (লক্ষ্য '_blank' ব্যবহার করে) - সমস্যাটি সমাধান করে না, এটি কেবলমাত্র "ডকুমেন্ট হিসাবে সংস্থানিত সংস্থান" কনসোল সতর্কতা বার্তাটি একটি নতুন ট্যাবে স্থানান্তর করে। রাগের নিচে ঝাড়ফুঁক করা কোনও সমাধান নয়।
colm.anseo

1
এটি পরিষ্কারভাবে মূল উত্তরটি সমাধান করে না। সিরিয়াসলি ... আমি ব্যবহারকারী ডকটিতে "ইউআরএল অনুলিপি করে, একটি নতুন ট্যাব খোলার, ইউআরএল আটকানো, ..." কী রাখব? ব্যবসা নিচে।
আটকে পড়া শিশু

22

আমি নিজে থেকে এই বার্তার কেবল ব্যাখ্যা খুঁজে পাইনি not এখানে আমার ব্যাখ্যা।

যতদূর আমি বুঝতে পেরেছি, ক্রোম এমন কিছু উপাদান প্রত্যাশা করেছিল যা সম্ভবত এটি প্রদর্শিত হতে পারে (একটি দস্তাবেজ ), তবে এটি এমন কিছু অর্জন করেছিল যা এটি প্রদর্শিত করতে পারে না (বা এমন কিছু যা প্রদর্শন করতে না বলা হয়েছিল)।

এটি উভয়ই একটি প্রশ্ন যা এইচটিএমএল পৃষ্ঠাগুলিতে কীভাবে ডকুমেন্টটি ঘোষণা করা হয়েছিল href( downloadরায়ের বার্তায় বৈশিষ্ট্যটি দেখুন ) এবং কীভাবে এটি এইচটিটিপি শিরোনাম (বিশেষত Content-Disposition) দ্বারা সার্ভারের উত্তরের মধ্যে ঘোষণা করা হয় । আশা এবং প্রত্যাশার বিপরীতে এটি চুক্তির প্রশ্ন ।

ইভানের পথে চালিয়ে যেতে, আমি এটি অনুভব করেছি:

Content-type: application/pdf
Content-disposition: attachment; filename=some.pdf

এর সাথে কেবল বেমানান :

<a href='some.pdf'>

ক্রোম কান্নাকাটি করবে রিসোর্সটিকে দস্তাবেজ হিসাবে ব্যাখ্যা করা হয়েছে তবে স্থানান্তরিত হয়েছে ...

প্রকৃতপক্ষে, সংযুক্তি প্রদর্শনের ঠিক এর অর্থ: ব্রাউজারটি লিঙ্কটি ব্যাখ্যা করবে না, বরং এটি অন্য — লুকানো — উদ্দেশ্যে সংরক্ষণ করবে। এখানে উপরে, হয় downloadপাশে অনুপস্থিত href, বা Content-dispositionশিরোনাম থেকে অপসারণ করা আবশ্যক। এটি ব্রাউজারটি নথিটি রেন্ডার করতে চায় কিনা তার উপর নির্ভর করে।

আশাকরি এটা সাহায্য করবে.


9

আমি আজ আমার নোড.জেএস / এক্সপ্রেস.জেএস অ্যাপ্লিকেশনটির সাথে ক্রোম সংস্করণ 30.0.1599.66 এর সাথে একই সমস্যার মুখোমুখি হয়েছি।

হেডার হয় , সঠিক প্রকাশ সেট তাদের সঠিকভাবে স্বয়ংক্রিয়ভাবে, এটি অন্যান্য ব্রাউজার হিসাবে উল্লিখিত কাজ করে এইচটিএমএল 5 'ডাউনলোড' অ্যাট্রিবিউট না সমাধানে, কি করে নির্বাণ করেনি সমাধানে Chrome এর উন্নত সেটিংস মধ্যে যাওয়া এবং বক্সে টিক চিহ্ন দেওয়ার হয় "জিজ্ঞাসা করুন যেখানে সংরক্ষণ করতে ডাউনলোড করার আগে প্রতিটি ফাইল "।

তারপরে কোনও "রিসোর্স ডকুমেন্ট হিসাবে ব্যাখ্যা করা হয়নি ..." ত্রুটিটি এই সমস্যার শিরোনাম হিসাবে রিপোর্ট করা হয়েছে যাতে দেখা যাচ্ছে যে আমাদের সার্ভার কোডটি সঠিক, এটি ক্রোম যা সংরক্ষণের জন্য সেট করার সময় কনসোলে ভুলভাবে সেই ত্রুটিটি রিপোর্ট করছে Chrome স্বয়ংক্রিয়ভাবে একটি লোকেশন ফাইল।


9

জাভাস্ক্রিপ্টের মাধ্যমে ফাইল ডাউনলোড করার সময় আমারও একই সমস্যা ছিল। ডাউনলোড অ্যাট্রিবিউট যুক্ত করা কোনও তাত্পর্যপূর্ণ না করে লক্ষ্য = '_ ফাঁকা' যুক্ত করেছে - আমি আর 'রিসোর্স ডকুমেন্ট হিসাবে ব্যাখ্যা করা ...' কনসোল বার্তাটি পাই না।

এখানে আমার সুন্দর সরল কোড:

var link = document.createElement('a');
link.target = '_blank';
link.href = url;
document.body.appendChild(link); // Required for Firefox
link.click();
link.remove(); 

আমি এটি সরাসরি এইচটিএমএল দিয়ে চেষ্টা করি নি তবে এটি কাজ করবে বলে আশা করব।

দ্রষ্টব্য আমি আবিষ্কার করেছি যে ফায়ারফক্সের লিঙ্কটি নথিতে সংযুক্ত করা দরকার যেখানে ক্রোম এটি ছাড়াই কাজ করবে।


4
কেবল একটি সতর্কতা, একটি লক্ষ্য = '_ব্ল্যাঙ্ক' আইই ১১ এর পপআপ প্রতিরোধ ব্যবস্থাকে ট্রিগার করবে ...
রবএম

4

আমি যখন ইফ্রেমে src = "image_url" বরাদ্দ করেছিলাম তখন আমি এর মুখোমুখি হয়েছি। দেখে মনে হচ্ছে যে iframe এটিকে একটি দস্তাবেজ হিসাবে ব্যাখ্যা করে তবে তা হয় না। এজন্য এটি একটি সতর্কতা প্রদর্শন করে।


আপনি দয়া করে আমাকে বলতে পারেন আপনি এটি ঠিক কিভাবে? আইফ্রেম ব্যবহার করার সময় আমি এখানে একই সমস্যার মুখোমুখি
হচ্ছি

আমি ফর্ম ডেটা ব্যবহার করেছি: var photoData = new FormData(); এবং তারপরে contentType: falseআমার অজ্যাক্স অনুরোধে সম্পত্তি সেট করুন । পোস্টের অনুরোধটি হবে: Content-Disposition: form-data;এবং বিষয়বস্তুর Content-Type: text/html
ধরণে

3

আমি adding target="_blank"লিঙ্কটি দিয়ে সমস্যার সমাধান করেছি । এটির সাথে ক্রোম একটি নতুন ট্যাব খোলে এবং প্রতিক্রিয়াশীল মোডে এমনকি সতর্কতা ছাড়াই পিডিএফ লোড করে।


আমি এটি করেছি এবং এটি কাজ করেছে: window.open(href, '_blank');এবং নতুন ট্যাব অটো ডাউনলোডের পরে বন্ধ হয়ে যায়।
চাদ রিচার্ডসন

1

একটি এএসপি ওয়েব সাইট প্রকল্পে আমার এই সমস্যাটি ছিল। একটি "সামগ্রী-দৈর্ঘ্য" শিরোনাম যুক্ত করার ফলে ডাউনলোডগুলিতে ক্রমে আবার কাজ শুরু হয়েছিল।


1

এই সমস্যাটি ক্রোম 61 সংস্করণে আবার উপস্থিত হয়েছিল। তবে মনে হচ্ছে এটি ক্রোম 62 এ স্থির হয়েছে।

আমার নীচের মত একটি রাইরাইটরুল আছে

RewriteRule ^/ShowGuide/?$ https://<website>/help.pdf [L,NC,R,QSA]

ক্রোম 61 দিয়ে, পিডিএফটি খোলেনি, কনসোলে এটি বার্তাটি দেখাচ্ছে

"Resource interpreted as Document but transferred with MIME type application/pdf: "

আমরা নীচে পুনর্লিখনের নিয়মে মাইম টাইপ যুক্ত করার চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি।

RewriteRule ^/ShowGuide/?$ https://<website>/help.pdf [L,NC,R,QSA, t:application/pdf]

আমি আমার ক্রোমকে সর্বশেষ 62 সংস্করণে আপডেট করেছি এবং এটি আবার পিডিএফ দেখাতে শুরু করেছে। তবে বার্তাটি এখনও কনসোলে রয়েছে।

অন্যান্য সমস্ত ব্রাউজারের সাথে, এটি ভাল / কাজ করছে is


1

কেবল এটির মধ্যে দৌড়ে গেল এবং অন্য যে কোনও তথ্য আমি খুঁজে পেলাম তা পাওয়া যায় নি: এটি একটি মূর্খ ত্রুটি: ফাইল ডাউনলোড শুরু করার আগে আমি ব্রাউজারে আউটপুট প্রেরণ করছিলাম। আশ্চর্যজনকভাবে, আমি কোনও সহায়ক ত্রুটি খুঁজে পাই নি (যেমন "শিরোনাম ইতিমধ্যে প্রেরিত" ইত্যাদি)। আশা করি, এটি অন্য কাউকে কিছুটা দুঃখ বাঁচায়!


0

আমার ক্ষেত্রে ফাইলের নামটি খুব দীর্ঘ ছিল এবং একই ত্রুটি পেয়েছে। একবার 200 টির নিচে সংক্ষিপ্ত করে ভাল কাজ করল worked (সীমাটি 250 হতে পারে?)


0

আমি এই ত্রুটিটি পেয়েছি কারণ আমি আমার ফাইল সিস্টেম থেকে পরিবেশন করছিলাম। একবার আমি কোনও HTTP সার্ভার দিয়ে শুরু করলে ক্রোম এটি বের করতে পারে।


0

আমি তৈরি একটি ডাউনলোড ম্যানেজারের সাথে একই সমস্যাটি ভোগ করছিলাম। ফাইলটির নামটি অনেক দীর্ঘ হওয়ায় এবং এক্সটেনশানটি বন্ধ হয়ে গেছে।

উদাহরণ: ফাইলের নাম: সাংগঠনিক প্রোটোকল এবং অন্যান্য বিষয় যা গুরুত্বপূর্ণ

<?php
  header("Content-Disposition: attachment; filename=$File_Name");
?>

সমাধান: ফাইলের নাম সঞ্চয় করতে মাইএসকিউএল ডাটাবেস ক্ষেত্রটি 255 এ বাড়িয়েছে এবং ব্লবটি সংরক্ষণের আগে একটি দৈর্ঘ্য পরীক্ষা করে। দৈর্ঘ্য> 255 এটিকে 250 কে নীচে ছাঁটাই করে ফাইল এক্সটেনশন যুক্ত করুন।


0

কোডের নীচে চেষ্টা করুন এবং আমি আশা করি এটি আপনার পক্ষে কাজ করবে।

var Interval = setInterval(function () {
                if (ReportViewer) {
                    ReportViewer.prototype.PrintReport = function () {
                        switch (this.defaultPrintFormat) {
                            case "Default":
                                this.DefaultPrint();
                                break;
                            case "PDF":
                                this.PrintAs("PDF");
                                previewFrame = document.getElementById(this.previewFrameID);
                                previewFrame.onload = function () { previewFrame.contentDocument.execCommand("print", true, null); }
                                break;
                        }
                    };
                    clearInterval(Interval);
                }
            }, 1000);

0

আমি আজ এটির মুখোমুখি হয়েছি এবং আমার সমস্যাটি ছিল আমার Content-Dispositionট্যাগটি ভুলভাবে সেট করা হয়েছিল। এটা তোলে উভয়ের জন্য মত দেখায় pdf& application/x-zip-compressed, আপনি এটি সেট অনুমিত করছি inlineপরিবর্তে attachment

সুতরাং আপনার শিরোনাম সেট করতে, জাভা কোডটি দেখতে এরকম হবে:

...
String fileName = "myFileName.zip";
String contentDisposition = "attachment";
if ("application/pdf".equals(contentType)
    || "application/x-zip-compressed".equals(contentType)) {
    contentDisposition = "inline";
}
response.addHeader("Content-Disposition", contentDisposition + "; filename=\"" + fileName + "\"");
...
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.