সার্ভার থেকে সদৃশ শিরোনাম পেয়েছে


119

সার্ভার থেকে সদৃশ শিরোনাম পেয়েছে

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

ত্রুটি 349 (নেট :: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): একাধিক স্বতন্ত্র বিষয়বস্তু-নিষ্পত্তি শিরোনাম প্রাপ্ত হয়েছে। এটি HTTP প্রতিক্রিয়া বিভক্ত আক্রমণ থেকে রক্ষা করতে অনুমোদিত নয়।

ক্রোমে পিডিএফ রফতানি করার সময় আমি এই ত্রুটিটি পেয়েছি।

Response.Buffer = false;
Response.ClearHeaders();
string ext = objProp.PACKAGEFILENAME.Substring(objProp.PACKAGEFILENAME.LastIndexOf("."));
string ext1 = ext.Substring(1);
Response.ContentType = ext1;
Response.AddHeader("Content-Disposition", "target;_blank,attachment; filename=" + objProp.PACKAGEFILENAME);
const int ChunkSize = 1024;
byte[] binary = objProp.PACKAGEDOCUMENT;
System.IO.MemoryStream ms = new System.IO.MemoryStream(binary);
int SizeToWrite = ChunkSize;

for (int i = 0; i < binary.GetUpperBound(0) - 1; i = i + ChunkSize)
{
    if (!Response.IsClientConnected) return;
    if (i + ChunkSize >= binary.Length) SizeToWrite = binary.Length - i;
    byte[] chunk = new byte[SizeToWrite];
    ms.Read(chunk, 0, SizeToWrite);
    Response.BinaryWrite(chunk);
    Response.Flush();
}
Response.Close();

কিভাবে এটি ঠিক করবেন?


18
আমি এটিও পেয়েছি যে ফাইলনামে কমা সেই ত্রুটিটি দেবে (কেবলমাত্র ক্রোমে)। আমি ভাবছি এখানে অবশ্যই বলার উপায় আছে যে ফাইল নাম = "abc, xyz.pdf" বৈধ is আমি পেয়েছি যে আমরা "," কে অন্য কোনও কিছুর সাথে প্রতিস্থাপন করতে পারি তবে আমি ফাইলের নামটি ঠিক একইভাবে সংরক্ষণ এবং ফিরিয়ে দিতে চাই। অন্যান্য ব্রাউজারগুলির মধ্যে (আই, ফায়ারফক্স, সাফারি, অপেরা) আমি এই সমস্যাটি দেখার চেষ্টা করেছি।
cusman

29
সুতরাং এটির এখনও ফাইল নামটিতে কমা থাকতে দেওয়ার একটি উপায় রয়েছে। শুধু ফাইলের নাম উদ্ধৃত করতে হবে। Response.AddHeader("content-disposition", "attachment; filename=\"" + FileNameWithCommas + "\"");
cusman

3
ধন্যবাদ @ গ্রাহক। এটাই ছিল আমার সমস্যা - ফাইল নেমে একটি কমা এবং কেবল ক্রোমেরই সমস্যা ছিল।
পিটারকেএ

উত্তর:


236

এইগুলি কিছুটা পুরাতন তবে গুগল র‍্যাঙ্কিংয়ে উচ্চ ছিল তাই আমি ভেবেছিলাম ক্রোম, পিডিএফ প্রদর্শন, সার্ভার থেকে প্রাপ্ত সদৃশ শিরোনাম থেকে পাওয়া উত্তরটি আমি ফেলে দেব

মূলত আমার সমস্যাটি হ'ল ফাইল নামটিতে কমা রয়েছে। সেগুলি সরিয়ে দিতে কমাগুলিতে একটি প্রতিস্থাপন করুন এবং আপনার ভাল হওয়া উচিত। একটি বৈধ ফাইল নাম তৈরি করার জন্য আমার ফাংশনটি নীচে।

    public static string MakeValidFileName(string name)
    {
        string invalidChars = Regex.Escape(new string(System.IO.Path.GetInvalidFileNameChars()));
        string invalidReStr = string.Format(@"[{0}]+", invalidChars);
        string replace = Regex.Replace(name, invalidReStr, "_").Replace(";", "").Replace(",", "");
        return replace;
    }

22
লিঙ্কিত উত্তরে @ ররিওকের মন্তব্য থেকে, ফাইলনামের চারপাশে উদ্ধৃতিগুলি সমস্যার সমাধান করতে হবে। এবং আসলে অনুমানটি বলে মনে হয় যে ফাইলের নাম উদ্ধৃত করা উচিত।
তৌকো

উদ্ধৃতি চিহ্নগুলি একটি সহায়তা হবে (এবং যুক্ত করা উচিত) তবে এই ফাংশনে অ বৈধ অক্ষরগুলি ছড়িয়ে দেওয়ার অতিরিক্ত সুবিধা রয়েছে যাতে আপনি শেষে বন্ধুত্বের নাম তৈরি করেন।
ব্রায়ান রবার্টস

@ ইউনিসবার্জনজি এটি আমার পক্ষে কাজ করেছে, আপনার ফাইল নামের উদ্ধৃতিগুলি এড়াতে হবে
coffekid

3
এটা আমার জন্য কাজ করে! কমা এবং স্থানগুলি ফাইলের নামগুলিতে ভাল ধারণা নয়!
হুগো

কেন .Replace(";", "").Replace(",", "")ইতিমধ্যে RegEx দ্বারা প্রতিস্থাপন? যোগ ;,আপনার Regex প্যাটার্ন:string invalidReStr = string.Format(@"[{0};,]+", invalidChars); string replace = Regex.Replace(name, invalidReStr, "_");
SBF

97

সার্ভার উচিত ফাইলের নাম প্রায় ডবল কোট করা, যেমন @cusman এবং তাদের উত্তরগুলিতে যে @Touko দ্বারা উল্লেখ করেছে।

উদাহরণ স্বরূপ:

Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

আমি আন্ডারস্কোর সহ ফাইলের নামের কোনও ডাবল উদ্ধৃতিও প্রতিস্থাপন করেছি।
পিটার এল

আমি একই কাজ করেছি, এখানে আন্ডারস্কোর সহ ফাইলের নামও পাওয়া যাচ্ছে।
জামশেয়ার

5

আমার কাছে সমস্যাটি ফাইল নাম নয় বরং নীচে হিসাবে কমা নিয়ে ছিল:

রেসপন্স.ওক (স্ট্রিমিংআউটপুট, মিডিয়াটাইপ। APPLICATION_OCTET_STREAM_TYPE)। শিরোনাম ("বিষয়বস্তু-স্বভাব", " সংযুক্তি, ফাইলের নাম = আপনার_ফाइल_ নাম ")। বিল্ড ();

আমি দুর্ঘটনাক্রমে সংযুক্তির পরে কমা রেখেছিলাম। সেমিকোলন দিয়ে কমা প্রতিস্থাপন করে সমাধান করেছেন।


3

আপনার ফাইলের নামের চারপাশে কেবল এক জোড়া ডাবল উদ্ধৃতি রাখুন:

this.Response.AddHeader ("বিষয়বস্তু-স্বভাব", $ "সংযুক্তি; ফাইলের নাম = \" {আউটপুট ফাইলনাম} \ "");


তবে ডাউনলোড করা ফাইল নামটিতে একটি আন্ডারস্কোর রয়েছে।
জামশেয়ার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.