1

人々がアップロードする画像をトリミングしてサイズ変更する必要があるサイトに取り組んでいます。アップロード機能のコードを取得しましたが、httpPost アクションの結果で、最初から画像のサイズを変更したいと考えています。そのためのコードも取得しましたが、画像を表示する方法が見つかりません。

これが私のコードです:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult FileUpload(HttpPostedFileBase uploadFile)
{
    if (uploadFile.ContentLength > 0)
    {
        foreach (string fileKey in System.Web.HttpContext.Current.Request.Files.Keys)
        {
            HttpPostedFile file = System.Web.HttpContext.Current.Request.Files[fileKey];
            if (file.ContentLength <= 0) continue; //Skip unused file controls.

            ImageResizer.ImageJob i = new ImageResizer.ImageJob(file, "~/img/", new ImageResizer.ResizeSettings("width=50;height=50;format=jpg;mode=max"));

            i.CreateParentDirectory = true; //Auto-create the uploads directory.
            i.Build();

            string relativePath = "~/img/" + Path.GetFileName(uploadFile.FileName);
            string physicalPath = Server.MapPath(relativePath);
            uploadFile.SaveAs(physicalPath);

            return View((object)relativePath);

    }
}

ImageResizer.ImageJob から画像情報を書き出したい..何かアイデアはありますか? ありがとうございました!

4

1 に答える 1

2

まず、使用しているコードを使用すると、誰でも実行可能なページをアップロードして実行できます

パスと長さのサニタイズを深く理解している場合を除き、どのような状況uploadFile.FileNameでも、最終的なパス名の一部として使用しないでください。

次に、ImageJob にはフォルダー パスではなく、宛先パスが必要です。などの変数を使用"~/img/<guid>.<ext>"して、結果の物理パスにアクセスできますi.FinalPathImageResizer.Util.PathUtils.GuessVirtualPath(i.FinalPath)アプリ相対パスを取得するために使用できます。

これはmvc3 ImageResizerのほぼ正確な複製であるため、投稿する前に検索機能の使用を検討してください。

于 2013-11-07T19:45:07.793 に答える