0

私の MVC プロジェクトには、ファイルをアップロードするためのフォームがあります。Google Chrome、Firefox、または Opera を使用してファイルをアップロードすると、Inventory_June_2013.xlsx.

IE8 を使用してファイルをアップロードすると、 のようなファイル名が取得されます C:\Documents and Settings\gornel\My Documents\Inventory_June_2013.xlsx

これを修正する方法は?

UPD
これは私のFile.csです

using System;
using System.ComponentModel.DataAnnotations;
namespace Argussite.SupplierService.Core.Domain
{
public class File : Entity
{
    public const int ContentTypeLength = 100;
    public const int FileNameLength = 100;
    public const int StorageNameLength = 100;

    protected File()
    {}

    public File(string name, string contentType, long fileSize)
    {
        Name = name;
        ContentType = contentType;
        FileSize = fileSize;
        StorageName = Guid.NewGuid().ToString("D");
        UploadTime = DateTime.Now;
    }

    [Required, MaxLength(FileNameLength)]
    public string Name { get; set; }

    [Required, MaxLength(ContentTypeLength)]
    public string ContentType { get; set; }

    public long FileSize { get; set; }

    [Required, MaxLength(StorageNameLength)]
    public string StorageName { get; set; }

    public DateTime UploadTime { get; set; }
}
}

そして、それはコントローラーからのコードです

public ActionResult UploadFile(Guid eventId, HttpPostedFileBase file)
    {
        //...
        var document = new File(file.FileName, file.ContentType, file.ContentLength);
        @event.FileId = document.Id;
        @event.ActualDate = document.UploadTime;

        Context.Files.Add(document);

        file.SaveAs(GetFilePath(document.StorageName));

        Register(new DocumentUploadedNotification(@event, @event.DocumentType, document, UrlBuilder));

        return RedirectToAction("Details", "Suppliers", new { id = @event.SupplierId });
    }

クラス HttpPostedFileBase とプロパティ FileName を使用します。

4

1 に答える 1

2

IE はフル パスを返しますが、他のブラウザーはファイル名のみを提供することが知られています。残念ながら、これは自分で処理しなければならないケースであり、asp.net ではサポートできません。

Path.GetFileName(file.FileName)メソッドを使用して、ファイル名部分のみを取得できます。

于 2013-07-17T08:13:30.240 に答える