MVC 컨트롤러의 내용으로 이미지를 업로드하려고합니다.MVC 작업 메서드에서 base64string에서 이미지를 만들 수 없습니다.
$scope.imageUpload = function (event) {
var files = event.target.files; //FileList object
fileString = event.target.files[0];
for (var i = 0; i < files.length; i++) {
var file = files[i];
var reader = new FileReader();
reader.onload = $scope.imageIsLoaded;
reader.readAsDataURL(file);
}
}
$scope.imageIsLoaded = function (e) {
$scope.$apply(function() {
$scope.userProfilePic = e.target.result;
$.ajax({
url: "FileUploadWithAjax",
type: "POST",
data: 'imageString=' + e.target.result.split(',')[1],
processData: false
});
});
}
이미지가로드되면 해당 내용이 MVC 컨트롤러로 전송됩니다.
[System.Web.Mvc.HttpPost]
public void FileUploadWithAjax([FromBody]string imageString)
{
bytes = Convert.FromBase64String(imageString);
using (MemoryStream ms = new MemoryStream(bytes))
{
Image image = Image.FromStream(ms);
image.Save("myBlargyImage.jpg");
}
}
하지만 스트림에서 이미지를 만드는 동안 문제가 발생합니다. "잘못된 매개 변수"라는 오류가 발생합니다.
유형 'System.ArgumentException'형식의 예외가 는 System.Drawing.dll에서 발생했지만 사용자 코드에서
추가 정보 처리되지 않은 : 매개 변수가 유효하지 않습니다.
스택 추적
에서 System.Drawing.Image.FromStream에서 System.Drawing.Image.FromStream (스트림 스트림, 부울 useEmbeddedColorManagement, 부울 validateImageData) (스트림 스트림)에서 Micraft.BBraun.Controllers.EmployeeController.FileUploadWithAjax (문자열 imageString) D : \ B Braun \ mvc 31 JAN 2017 \ Micraft.BBraun \ Controllers \ EmployeeController.cs : line 351 at lambda_method (Closure, Controlle rBase, Object [])에서 System.Web.Mvc.ActionMethodDispatcher. <> c__DisplayClass1.b__0 (ControllerBase 컨트롤러, 오브젝트 [] 파라메터) System.Web.Mvc.ActionMethodDispatcher.Execute에서 System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext 에서 (ControllerBase 제어기는 [] 매개 개체) controllerContext, IDictionary System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase
1.End()에서의 System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39 (IAsyncResult를 asyncResult, ActionInvocation innerInvokeState)에서 파라메터) System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResul System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters에서 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()에서 t asyncResult). <> c__DisplayClass46.b__3f()
UPDATE
난 그냥 HTML로 소스에서 이미지 텍스트를 복사 할 때 http://codebeautify.org/base64-to-image-converter
처럼 base64string에서 이미지를 생성 할 수있는 온라인 도구를 확인하고, 위의 사이트에서 이미지를 생성 할 수있었습니다.
그 후 나는 내 서버 측 방법으로 이미지 콘텐츠를 복사하려고했지만 놀랍게도 이미지를 생성 할 수 없었다.신중하게 울부 짖는 이미지를 선택하면
그럼 내가 이미지의 내용에있는 "+"기호있을 때마다 같은 몇 가지 변경 사항을 볼 수 있습니다, 일부 diferences에게 을 모두 텍스트를 비교 발견, 그 "빈 공간"으로 대체.이 데이터를 서버에 게시하는 동안 사용해야하는 콘텐츠 유형이 있습니까?
하세요! –
하지만 메모리 스트림에서 이미지를 만드는 동안 다른 오류가 발생합니다. 'GDI +에서 일반적인 오류가 발생했습니다.' –
음 ...'using '문에서'Image image = ...'을 감쌀 것입니다. 또한 파일이 저장되는 위치를 확인하십시오 (권한이있는 경우). – erdinger