반응형
<script type="text/javascript">
// 공백이 있나 없나 체크
function checkSpace(str) {
	if(str.search(/\s/) != -1) {
		return true;
	} else {
		return false;
	}
}

// 특수 문자가 있나 없나 체크
function checkSpecial(str) {
	var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi;

	if(special_pattern.test(str) == true) {
		return true;
	} else {
		return false;
	}
}

// 비밀번호 패턴 체크 (8자 이상, 문자, 숫자, 특수문자 포함여부 체크)
function checkPasswordPattern(str) {
	var pattern1 = /[0-9]/;				// 숫자
	var pattern2 = /[a-zA-Z]/;			// 문자
	var pattern3 = /[~!@#$%^&*()_+|<>?:{}]/;	// 특수문자

	if(!pattern1.test(str) || !pattern2.test(str) || !pattern3.test(str) || str.length < 8) {
		alert("비밀번호는 8자리 이상 문자, 숫자, 특수문자로 구성하여야 합니다.");
		return false;
	} else {
		return true;
	}
}
</script>

출처 : https://holybell87.tistory.com/30#.XrzIRuH_yUk

반응형
반응형

.cshtml (razor page)

@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, 
                            new { enctype = "multipart/form-data" }))
{  
    <label for="file">Upload Image:</label> 
    <input type="file" name="file" id="file" style="width: 100%;" /> 
    <input type="submit" value="Upload" class="submit" /> 
}

Controller

(HomeController.cs)

public ActionResult FileUpload(HttpPostedFileBase file)
    {
        if (file != null)
        {
            try
    {
        HttpFileCollection hfc = HttpContext.Current.Request.Files;
        string path = "/content/files/contact/";

        for (int i = 0; i < hfc.Count; i++)
        {
            HttpPostedFile hpf = hfc[i];
            if (hpf.ContentLength > 0)
            {
                string fileName = "";
                if (Request.Browser.Browser == "IE")
                {
                    fileName = Path.GetFileName(hpf.FileName);
                }
                else
                {
                    fileName = hpf.FileName;
                }
                string fullPathWithFileName = path + fileName;
                hpf.SaveAs(Server.MapPath(fullPathWithFileName));
            }
        }

    }
    catch (Exception ex)
    {
        throw ex;
    }

        }
        // after successfully uploading redirect the user
        return RedirectToAction("actionname", "controller name");
    }

이러면 /content/files/contact/ 의 경로에 이미지파일들이 업로드 된다.

날짜와 사용자의 index 등을 잘 조합해서 중복되지 않는 파일명을 만들어 업로드하고 

DB에 경로를 지정해주면 될것입니다.

 

출처 : https://stackoverflow.com/questions/16255882/uploading-displaying-images-in-mvc-4

반응형
반응형

input 태그를 통해 다중 파일을 전송하고 싶을떄는 이거하나면  됩니다.

multiple
<input type="file" name="file" id="file" multiple>

 

이때 이미지 와같이 특정 확장자나 특정 파일로 한정시키고싶을땐

<input type="file" accept=".xls,.xlsx" /> <!-- xls,xlsx 만 허용 -->
<input type="file" accept=".png,.jpg" />  <!-- png, jpg 만 허용 -->

<input type="file" accept="image/*" /> <!-- 모든 이미지 type 허용 --> 
<input type="file" accept="audio/*" /> <!-- 모든 오디오 type 허용 --> 
<input type="file" accept="video/*" /> <!-- 모든 비디오 type 허용 --> 

이와 같이 하면됩니다.

 

하지만 사용자가 직접 파일선택시 모든 파일을 선택하는것을 막을 순 없기떄문에

클라이언트단(js)과 서버단(jsp, .net, php, ruby 등등)에서 모두 체크를 시행해줘야합니다.

반응형
반응형

Creating MVC Application

Let us implement these in a sample Application. Open Visual Studio. Go to File->New->Project. Give a suitable name to the Application. Click OK.



Select MVC Template. Click OK.



Adding Folder

We will add a folder to store the files in the application. Here, I have added a folder in the application.



Adding Controller

Let us add a controller. Right click on the Controller. Add->Controller.



Select MVC 5 Controller -Empty. Click Add.



Give a suitable name to the controller.



Write the following code in the controller.

 

using System;  
usingSystem.Collections.Generic;  
using System.IO;  
usingSystem.Linq;  
usingSystem.Web;  
usingSystem.Web.Mvc;  
namespaceFileUpload.Controllers  
{  
    public class UploadController: Controller  
    {  
        // GET: Upload  
        publicActionResult Index()  
        {  
            return View();  
        }  
        [HttpGet]  
        publicActionResultUploadFile()  
        {  
            return View();  
        }  
        [HttpPost]  
        publicActionResultUploadFile(HttpPostedFileBase file)  
        {  
            try  
            {  
                if (file.ContentLength > 0)  
                {  
                    string _FileName = Path.GetFileName(file.FileName);  
                    string _path = Path.Combine(Server.MapPath("~/UploadedFiles"), _FileName);  
                    file.SaveAs(_path);  
                }  
                ViewBag.Message = "File Uploaded Successfully!!";  
                return View();  
            }  
            catch  
            {  
                ViewBag.Message = "File upload failed!!";  
                return View();  
            }  
        }  
    }  
}  

Adding View

Right click on UploadFileActionResult. Go to Add View.



Select the empty template. Click add.



Write the following code in the View.

@{  
    ViewBag.Title = "UploadFile";  
}  
   
<h2>UploadFile</h2>  
   
@using(Html.BeginForm("UploadFile","Upload", FormMethod.Post, new { enctype="multipart/form-data"}))  
{  
      
    <div>  
        @Html.TextBox("file", "", new {  type= "file"}) <br />  
   
        <input type="submit" value="Upload" />  
   
        @ViewBag.Message  
   
    </div>  
      
      
}  

Browse the Application

Let us now run the Application and check if it is working fine or not. Browse the Application.



Click upload. I have debugged the code to verify that the file gets uploaded successfully.



The code is working as per the expectations, as it hits the success message. We should get this message on the View, as well.



We will verify the file uploaded, by opening the folder in the Application’s directory.



Summary

Hence, we have just learned how to upload the file in ASP.NET MVC. I hope this post is useful to developers.

 

출처 : https://www.c-sharpcorner.com/article/upload-files-in-asp-net-mvc-5/

반응형

+ Recent posts