Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Get Url File Name #23

Closed
ghost1372 opened this issue Nov 19, 2020 · 14 comments
Closed

[Feature Request] Get Url File Name #23

ghost1372 opened this issue Nov 19, 2020 · 14 comments
Assignees
Labels
enhancement New feature or request

Comments

@ghost1372
Copy link
Contributor

Please add this feature to get the file name and extension from the link Therefore, there is no need to specify the name and extension in the path

for example:

var downloader = new DownloadService(downloadOpt);
await downloader.DownloadFileAsync(url, "C:\myFolder")
@lindexi
Copy link

lindexi commented Nov 20, 2020

Yeah, I add this feature in my FileDownloader library: https://github.com/dotnet-campus/dotnetCampus.FileDownloader

@bezzad
Copy link
Owner

bezzad commented Nov 20, 2020

I trying to add this feature as soon as possible. Thanks for your feedback.

@bezzad
Copy link
Owner

bezzad commented Dec 1, 2020

Hi @ghost1372,
I added this feature to my library. Please check the new version 1.9.9.
To use this feature, call DownloadService method like below:

await ds.DownloadFileAsync(downloadItem.Url, new DirectoryInfo(downloadItem.FolderPath));

@ghost1372
Copy link
Contributor Author

ghost1372 commented Dec 1, 2020

Hi @bezzad thank you
just 1 thing:

It is not possible to identify the file name and extension in this kind of links:
https://5743-zanjan.medu.ir/portal/fileLoader.php?code=0a1c53101df0e93134a7771606813229
solution:

byte[] data = client.DownloadData(downloadLink);
                    if (!string.IsNullOrEmpty(client.ResponseHeaders["Content-Disposition"]))
                    {
                        Name = client.ResponseHeaders["Content-Disposition"].Substring(client.ResponseHeaders["Content-Disposition"].IndexOf("filename=") + 9).Replace("\"", "");
                    }

@bezzad
Copy link
Owner

bezzad commented Dec 1, 2020

I will try to implement this as well, but I do not promise that I can. Because there are a series of problems in implementing this type, first of all, how do we know if a link puts the name on the URL address or the header! There is a dichotomy, but I try to think more about that and I hope it is resolved. Thanks

@ghost1372
Copy link
Contributor Author

I will try to implement this as well, but I do not promise that I can. Because there are a series of problems in implementing this type, first of all, how do we know if a link puts the name on the URL address or the header! There is a dichotomy, but I try to think more about that and I hope it is resolved. Thanks

سلام اقای خسروی فر خسته نباشید ببخشید که به فارسی مینویسم
شما برای دریافت نام فایل از کد زیر استفاده کردید
Path.GetFileName(uri.LocalPath); حالا چی میشه ما یه شرط بزاریم که چک کنه اخر لینک پسوند هست یا نه اگر بود کد بالا اجرا بشه و اگر نبود از هیدر نام فایل خونده بشه
نظرتون در این مورد چیه؟

@lindexi
Copy link

lindexi commented Dec 5, 2020

d

I will try to implement this as well, but I do not promise that I can. Because there are a series of problems in implementing this type, first of all, how do we know if a link puts the name on the URL address or the header! There is a dichotomy, but I try to think more about that and I hope it is resolved. Thanks

سلام اقای خسروی فر خسته نباشید ببخشید که به فارسی مینویسم
شما برای دریافت نام فایل از کد زیر استفاده کردید
Path.GetFileName(uri.LocalPath); حالا چی میشه ما یه شرط بزاریم که چک کنه اخر لینک پسوند هست یا نه اگر بود کد بالا اجرا بشه و اگر نبود از هیدر نام فایل خونده بشه
نظرتون در این مورد چیه؟

@ghost1372 That's what I did, and I wrote Chinese blog: Google Translate dotnet C# How to quickly get a url link to read the file name without the Internet

@bezzad
Copy link
Owner

bezzad commented Dec 5, 2020

I will try to implement this as well, but I do not promise that I can. Because there are a series of problems in implementing this type, first of all, how do we know if a link puts the name on the URL address or the header! There is a dichotomy, but I try to think more about that and I hope it is resolved. Thanks

سلام اقای خسروی فر خسته نباشید ببخشید که به فارسی مینویسم
شما برای دریافت نام فایل از کد زیر استفاده کردید
Path.GetFileName(uri.LocalPath); حالا چی میشه ما یه شرط بزاریم که چک کنه اخر لینک پسوند هست یا نه اگر بود کد بالا اجرا بشه و اگر نبود از هیدر نام فایل خونده بشه
نظرتون در این مورد چیه؟

با سلام
سوال اینجاست که ما اکثر فایل هایی بدون پسوند هم برای دانلود داریم.
من برای حل مشکل فوق ابتدا هدر را بررسی میکنم و اگر نامی نداشت از روی url نام را میخوانم.
الان مشکلی که دارم در مورد encoding نام فایل در هدر هست که هرکاری میکنم به utf8‌ تبدیل نمیشود!
میتوانید در این زمینه خودتان بررسی کنید و اگر راهی پیدا کردید بهم کمک کنید؟

@ghost1372
Copy link
Contributor Author

I will try to implement this as well, but I do not promise that I can. Because there are a series of problems in implementing this type, first of all, how do we know if a link puts the name on the URL address or the header! There is a dichotomy, but I try to think more about that and I hope it is resolved. Thanks

سلام اقای خسروی فر خسته نباشید ببخشید که به فارسی مینویسم
شما برای دریافت نام فایل از کد زیر استفاده کردید
Path.GetFileName(uri.LocalPath); حالا چی میشه ما یه شرط بزاریم که چک کنه اخر لینک پسوند هست یا نه اگر بود کد بالا اجرا بشه و اگر نبود از هیدر نام فایل خونده بشه
نظرتون در این مورد چیه؟

با سلام
سوال اینجاست که ما اکثر فایل هایی بدون پسوند هم برای دانلود داریم.
من برای حل مشکل فوق ابتدا هدر را بررسی میکنم و اگر نامی نداشت از روی url نام را میخوانم.
الان مشکلی که دارم در مورد encoding نام فایل در هدر هست که هرکاری میکنم به utf8‌ تبدیل نمیشود!
میتوانید در این زمینه خودتان بررسی کنید و اگر راهی پیدا کردید بهم کمک کنید؟

بله خوشحال میشم اگر بتونم کمک کنم
نمونه لینک اگر دارید ضمیمه کنید تا من هم تست کنم

@ghost1372
Copy link
Contributor Author

d

I will try to implement this as well, but I do not promise that I can. Because there are a series of problems in implementing this type, first of all, how do we know if a link puts the name on the URL address or the header! There is a dichotomy, but I try to think more about that and I hope it is resolved. Thanks

سلام اقای خسروی فر خسته نباشید ببخشید که به فارسی مینویسم
شما برای دریافت نام فایل از کد زیر استفاده کردید
Path.GetFileName(uri.LocalPath); حالا چی میشه ما یه شرط بزاریم که چک کنه اخر لینک پسوند هست یا نه اگر بود کد بالا اجرا بشه و اگر نبود از هیدر نام فایل خونده بشه
نظرتون در این مورد چیه؟

@ghost1372 That's what I did, and I wrote Chinese blog: Google Translate dotnet C# How to quickly get a url link to read the file name without the Internet

thanks but your method not work for this url
https://5743-zanjan.medu.ir/portal/fileLoader.php?code=0a1c53101df0e93134a7771606813229
this link return a zip file

@bezzad
Copy link
Owner

bezzad commented Dec 5, 2020

@ghost1372 Yes, the code for this item has not yet been finalized to be pushed to the Github. Check this issue to yourself with the C# code and you will notice that the return value of a filename.rar is in incorrect encoding.

@bezzad
Copy link
Owner

bezzad commented Dec 6, 2020

@ghost1372, Please check the develop branch, let me know if there is a problem. Thanks

@ghost1372
Copy link
Contributor Author

@bezzad thank you worked very well 👏

but you should change your test

Assert.AreEqual("مسابقه‌ی ایده‌ی کسب و کار دانش‌آموزی در ایام کرونا کلیه‌ی مدارس دوره‌ی دوم متوسطه.rar",
new Request("https://5743-zanjan.medu.ir/portal/fileLoader.php?code=0a1c53101df0e93134a7771606813229").GetUrlDispositionFilenameAsync().Result);

Because this link is only available from Iran IP and people who want to compile the project from outside Iran will not be a successful test.

@bezzad
Copy link
Owner

bezzad commented Dec 6, 2020

@ghost1372 yeah, I will change that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants