سؤال

أحاول تجميع صفحة حيث يمكن للمستخدم تحميل ملف ، ويذهب إلى قاعدة بيانات.

أنا أتابع برنامج تعليمي ، ويبدو أن طريقة وحدة التحكم الخاصة بي حتى الآن:

public ActionResult Index()
{
    ViewData["Message"] = "File Upload";
    foreach (string upload in Request.Files)
    {
        if (!Request.Files[upload].HasFile()) continue;
        string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
        string filename = Path.GetFileName(Request.Files[upload].FileName);
        Request.Files[upload].SaveAs(Path.Combine(path, filename));
    }

    return View();
}

فيما يلي أيضًا مثال على شكل وجهة نظري:

<p>
    <% using (Html.BeginForm("", "home", FormMethod.Post, new { enctype = "multipart/form-data" }))
       { %>
    <input type="file" name="FileUpload1" /><br />
    <input type="submit" name="Submit" id="Submit" value="Upload" />
    <% } %>
</p>

أحصل حاليًا على خطأين في التجميع:

  1. "system.web.htpostedfilebase" لا يحتوي على تعريف لـ "hasfile" ولا يمكن العثور على أي طريقة تمديد "hasfile" قبول الوسيطة الأولى من النوع ". ؟)
  2. اسم "مسار" غير موجود في السياق الحالي

فيما يلي أيضًا مثال على ما أستخدمه لمساحات الأسماء في وحدة التحكم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.UI.WebControls;

سأكون ممتنًا جدًا إذا تمكن أي شخص من توجيهني في الاتجاه الصحيح لإصلاح هذا الخطأ.

هل كانت مفيدة؟

المحلول

أعتقد أنني وجدت الدورة التعليمية كنت تتابع؟

إذا كان الأمر كذلك - تحقق من الجزء الذي كتب فيه المؤلف طريقة تمديد مخصصة لطريقة HasFile (). إنه ليس جزءًا من الإطار ، لذلك ستحتاج إلى إنشاء ذلك أيضًا.

المسألة الثانية هي أن المسار جزء من مساحة اسم System.io ، لذلك ستحتاج إلى إضافة ذلك أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top