Visual Studio 15에서 작업하고 있습니다. 크기가 6MB 인 파일을 업로드해야합니다. .Net 4.5.1을 Entity Framework 6과 함께 사용하고 있습니다.Visual Studio에서 크기가 6MB 인 파일을 업로드하지 않았습니다.
다음 스크립트 및 html 코드는 파일 업로드를 선택하고 확인하기 위해 뷰 수준 면도기에 작성되었습니다.
$('#SaveResponse').click(function() {
var data = new FormData();
var files = $("#imagefile").get(0).files;
if (files.length > 0) {
data.append("UploadedImage", files[0]);
}
else
{
alert('You have not selected any File');
return;
}
$.ajax({
async: false,
cache: false,
type: "POST",
dataType: "json",
contentType: false,
processData: false,
url: "@(Url.RouteUrl("UploadFile"))",
data: data,
success: function (JsonCP) {
if (JsonCP.msg != null) {
if (JsonCP.msg.Key) {
alert(JsonCP.msg.Value);
$("#fileUpload").val('');
} else
alert(JsonCP.msg.Value);
}
},
error: function (JsonCP) {
alert(JsonCP.msg.Value);
}
});
});
<table>
<tr>
<td align="right" width="200px">@Html.Label("Select the File:")</td>
<td align="left" width="200px"><input type="file" id="imagefile" />
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="Save this
Response" id="SaveResponse" name="SaveResponse" /></td>
</tr>
</table>
다음 코드는 파일을 업로드하고 적절한 메시지를 표시하기 위해 컨트롤러에 기록됩니다.
[System.Web.Mvc.AcceptVerbs(HttpVerbs.Post)]
public ActionResult UploadFile()
{
UploadResponseModel rm = new UploadResponseModel();
try
{
if (System.Web.HttpContext.Current.Request.Files.AllKeys.Any())
{
var httpPostedFile =
System.Web.HttpContext.Current.Request.Files["UploadedImage"];
if (httpPostedFile != null)
{
string fileSavePath =
Path.Combine(HttpContext.Server.MapPath("~/UploadedFiles"),
Path.GetFileName(httpPostedFile.FileName));
httpPostedFile.SaveAs(fileSavePath);
rm.responseModel.response.ResponseImage =
System.IO.File.ReadAllBytes(filesavePath)
if (rm.responseModel.insertResponse() != 1)
rm.msg = new KeyValuePair<bool, string>(false,
"row is not saved successfully.");
else
rm.msg=new KeyValuePair<bool,string>(true,"File
uploaded Successfully.");
}
else
rm.msg = new KeyValuePair<bool, string>(false, "Could not
get the file.");
}
else
rm.msg = new KeyValuePair<bool, string>(false, "No file found to
Upload.");
}
catch (Exception ex)
{
rm.msg = new KeyValuePair<bool, string>(false, "Can not Upload the
file: " + ex.Message);
}
return Json(rm, JsonRequestBehavior.AllowGet);
}
}
다음 함수는 Responses라는 SQL 데이터베이스 테이블에 행을 삽입하는 데 사용됩니다.
public int insertResponse()
{
using (Entities cntx = new Entities())
{
cntx.Responses.Add(this.response);cntx.Entry(this.response).
State = System.Data.Entity.EntityState.Added;
int ex=cntx.SaveChanges();
return ex;
}
}
responseImage라고하는 응답 테이블의 열 중 하나가 fileStream의 데이터 유형입니다. 또 다른 열은 uniqueIdentifier 유형입니다. 테이블 생성 SQL은 아래와 같습니다.
CREATE TABLE [dbo].[Responses] (
[ResponseId] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL,
[ResponseImage] VARBINARY (MAX) FILESTREAM NULL,
CONSTRAINT [PK_Responses] PRIMARY KEY CLUSTERED ([ResponseId] ASC)
FILESTREAM_ON [FileStreamGroup], UNIQUE NONCLUSTERED ([ResponseId] ASC)
);
웹 confif 파일은 프로그램이 제대로 작동하고 작은 크기의 파일에 대한 적절한 메시지를 보여줍니다이
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" maxRequestLength="3145728"
executionTimeout="9999999" useFullyQualifiedRedirectUrl="false"
minFreeThreads="8" minLocalRequestFreeThreads="4"
appRequestQueueLimit="1000"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="3221225472" />
</requestFiltering>
</security>
같이 설정되어 있지만 크기 3메가바이트의 파일이 어떤 표시되지 않습니다 오류 메시지는 메모리 부족조차 없습니다. 그러나 행과 파일이 저장됩니다. 파일을 업로드해도 메시지가 표시되지 않는 이유는 무엇입니까?
Visual Studio 15 : VS2015 (v14.x) 또는 VS2017 (v15.x)을 의미합니까? –
클라이언트 쪽, 서버 쪽 및 SQL Server 논리가 있습니다. 세 가지 구성 요소 중 처음 두 개 또는 후반 두 개 사이의 문제인지 확인하기 위해 디버그 할 수 있었습니까? –
문제는 서버가 클라이언트에게 메시지를 보내지 않는다는 것입니다. –