- 1402/01/06
- 0
- 57
کمک برای آپلود فایل بر روی یک سرور خارج از پروژه اصلی
با سلام و احترام
یک پروژه داریم که متشکل از سه قسمت است
1 سمت ui
2 سمت API
3 فایل سرور که این نیز API دارد
در قسمتی از پروژه کاربر باید یک فایل را آپلود نماید (از آنجا که کاربر(سمت ui) مستقیم با فایل سرور ارتباط ندارد از طریق یک متد در سمت api فایل را به سمت api ارسال کرده و api دوباره باید این فایل را به سمت api فایل سرور ارسال نماید)
لایه وسط این جریان باید به چه طریقی این انتقال را انجام دهد با پرس وجو هایی که انجام دادم بهترین روش بافر کردن فایل است ولی نحوه اجرای آن را نتوانستم پیدا کنم
لایه api با دات نت 7 نوشته شده است.
اگر کسی از دوستان چنین موردی داشته و توانسته است آن را پیاده سازی نمایید ممنون میشم کمک کند
با تشکر
- 1402/01/15
سلام،
برای انتقال فایل از سمت کلاینت به سمت سرور، شما میتوانید از پروتکل HTTP و درخواستهای POST استفاده کنید.
در کلاینت، شما میتوانید از تکنولوژیهایی مانند FormData برای ایجاد یک فرم برای ارسال فایل استفاده کنید و درخواست را با استفاده از XMLHttpRequest یا fetch ارسال کنید. به عنوان مثال:
const input = document.querySelector('input[type="file"]');
const file = input.files[0];
const formData = new FormData();
formData.append('file', file);
fetch('/api/upload', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(result => {
console.log('Success:', result);
})
.catch(error => {
console.error('Error:', error);
});
در سمت API، شما میتوانید از یک کنترلر برای پردازش درخواست استفاده کنید. در این کنترلر، شما میتوانید از یک IFormFile برای دریافت فایل ارسالی استفاده کنید و سپس این فایل را به سمت سرور فایل ارسال کنید. به عنوان مثال:
[HttpPost]
[Route("api/upload")]
public async Task<IActionResult> Upload(IFormFile file)
{
var client = new HttpClient();
var response = await client.PostAsync("http://fileserver/api/upload", new StreamContent(file.OpenReadStream()));
if (response.IsSuccessStatusCode)
{
return Ok();
}
else
{
return BadRequest();
}
}
در این مثال، ما از یک HttpClient برای ارسال فایل به سمت سرور فایل استفاده کردهایم. برای استفاده از این کد، شما باید یک کنترلر برای دریافت فایل از سمت کلاینت و یک کنترلر برای ارسال فایل به سمت سرور فایل بسازید. همچنین، شما باید مطمئن شوید که API سمت کلاینت و API سمت سرور فایل با یکدیگر هماهنگ هستند (به عنوان مثال، شما باید از یک فرمت مشخص فایل استفاده کنید). در نهایت، بهتر است از روشهای امنیتی برای انتقال فایل استفاده کنید تا از هرگونه نفوذ ناخواسته جلوگیری کنید.
پیشنهاد می کنم Stream ها در دات نت را مطالعه نمایید.
مشاهده فیلم آشنایی با معماری استریم (Stream Architecture) در دات نت
پاسخی برای این باگ ارسال کنید
لطفا کدها را درون قطعه کد ارسال نمایید
برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری