Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从javascript将图像上载到服务器_C#_Javascript_Jquery_C# 4.0 - Fatal编程技术网

C# 从javascript将图像上载到服务器

C# 从javascript将图像上载到服务器,c#,javascript,jquery,c#-4.0,C#,Javascript,Jquery,C# 4.0,我使用下面的代码来查看使用javascript上传的文件。它显示了假路径,因此我无法将文件上载到服务器路径。请帮助我将图像上载到server.mappath文件夹 <input type='file' name='file' id='file' value='Choose Photo' accept='image/png,image/jpeg' onchange='handleFileSelect(this);' /> <script type="text/javascrip

我使用下面的代码来查看使用javascript上传的文件。它显示了假路径,因此我无法将文件上载到服务器路径。请帮助我将图像上载到server.mappath文件夹

<input type='file' name='file' id='file' value='Choose Photo' accept='image/png,image/jpeg' onchange='handleFileSelect(this);' />

<script type="text/javascript">
function handleFileSelect(input) {
    try {

        if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
                document.getElementById('hf_image').value = e.target.result
                $('#preview').attr('src', document.getElementById('hf_image').value);
            }

            reader.readAsDataURL(input.files[0]);
        }

    }
    catch (ex) {
        alert('Image Preview : ' + ex.Message);
    }
}

</script>
}

<input type='file' onchange="imageSelected(this.files)">
以上代码可能对您有所帮助
附件json包含文件详细信息

为什么不使用易于使用的AjaxFileUploader

按照以下步骤接近您的目标

步骤1:

将Jquery文件拖动到Head标记

将此代码添加到JavaScript文件并将其拖到页面的头部

jQuery.extend({
createUploadIframe: function (id, uri) {
    //create frame
    var frameId = 'jUploadFrame' + id;
    var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"';
    if (window.ActiveXObject) {
        if (typeof uri == 'boolean') {
            iframeHtml += ' src="' + 'javascript:false' + '"';

        }
        else if (typeof uri == 'string') {
            iframeHtml += ' src="' + uri + '"';

        }
    }
    iframeHtml += ' />';
    jQuery(iframeHtml).appendTo(document.body);

    return jQuery('#' + frameId).get(0);
},
createUploadForm: function (id, fileElementId, data) {
    //create form   
    var formId = 'jUploadForm' + id;
    var fileId = 'jUploadFile' + id;
    var form = jQuery('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
    if (data) {
        for (var i in data) {
            jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
        }
    }
    var oldElement = jQuery('#' + fileElementId);
    var newElement = jQuery(oldElement).clone();
    jQuery(oldElement).attr('id', fileId);
    jQuery(oldElement).before(newElement);
    jQuery(oldElement).appendTo(form);



    //set attributes
    jQuery(form).css('position', 'absolute');
    jQuery(form).css('top', '-1200px');
    jQuery(form).css('left', '-1200px');
    jQuery(form).appendTo('body');
    return form;
},

ajaxFileUpload: function (s) {
    // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout        
    s = jQuery.extend({}, jQuery.ajaxSettings, s);
    var id = new Date().getTime()
    var form = jQuery.createUploadForm(id, s.fileElementId, (typeof (s.data) == 'undefined' ? false : s.data));
    var io = jQuery.createUploadIframe(id, s.secureuri);
    var frameId = 'jUploadFrame' + id;
    var formId = 'jUploadForm' + id;
    // Watch for a new set of requests
    if (s.global && !jQuery.active++) {
        jQuery.event.trigger("ajaxStart");
    }
    var requestDone = false;
    // Create the request object
    var xml = {}
    if (s.global)
        jQuery.event.trigger("ajaxSend", [xml, s]);
    // Wait for a response to come back
    var uploadCallback = function (isTimeout) {
        var io = document.getElementById(frameId);
        try {
            if (io.contentWindow) {
                xml.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : null;
                xml.responseXML = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument : io.contentWindow.document;

            } else if (io.contentDocument) {
                xml.responseText = io.contentDocument.document.body ? io.contentDocument.document.body.innerHTML : null;
                xml.responseXML = io.contentDocument.document.XMLDocument ? io.contentDocument.document.XMLDocument : io.contentDocument.document;
            }
        } catch (e) {
            jQuery.handleError(s, xml, null, e);
        }
        if (xml || isTimeout == "timeout") {
            requestDone = true;
            var status;
            try {
                status = isTimeout != "timeout" ? "success" : "error";
                // Make sure that the request was successful or notmodified
                if (status != "error") {
                    // process the data (runs the xml through httpData regardless of callback)
                    var data = jQuery.uploadHttpData(xml, s.dataType);
                    // If a local callback was specified, fire it and pass it the data
                    if (s.success)
                        s.success(data, status);

                    // Fire the global callback
                    if (s.global)
                        jQuery.event.trigger("ajaxSuccess", [xml, s]);
                } else
                    jQuery.handleError(s, xml, status);
            } catch (e) {
                status = "error";
                jQuery.handleError(s, xml, status, e);
            }

            // The request was completed
            if (s.global)
                jQuery.event.trigger("ajaxComplete", [xml, s]);

            // Handle the global AJAX counter
            if (s.global && ! --jQuery.active)
                jQuery.event.trigger("ajaxStop");

            // Process result
            if (s.complete)
                s.complete(xml, status);

            jQuery(io).unbind()

            setTimeout(function () {
                try {
                    jQuery(io).remove();
                    jQuery(form).remove();

                } catch (e) {
                    jQuery.handleError(s, xml, null, e);
                }

            }, 100)

            xml = null

        }
    }
    // Timeout checker
    if (s.timeout > 0) {
        setTimeout(function () {
            // Check to see if the request is still happening
            if (!requestDone) uploadCallback("timeout");
        }, s.timeout);
    }
    try {

        var form = jQuery('#' + formId);
        jQuery(form).attr('action', s.url);
        jQuery(form).attr('method', 'POST');
        jQuery(form).attr('target', frameId);
        if (form.encoding) {
            jQuery(form).attr('encoding', 'multipart/form-data');
        }
        else {
            jQuery(form).attr('enctype', 'multipart/form-data');
        }
        jQuery(form).submit();

    } catch (e) {
        jQuery.handleError(s, xml, null, e);
    }

    jQuery('#' + frameId).load(uploadCallback);
    return { abort: function () { } };

},

uploadHttpData: function (r, type) {
    var data = !type;
    data = type == "xml" || data ? r.responseXML : r.responseText;
    // If the type is "script", eval it in global context
    if (type == "script")
        jQuery.globalEval(data);
    // Get the JavaScript object, if JSON is used.
    if (type == "json")
        eval("data = " + data);
    // evaluate scripts within html
    if (type == "html")
        jQuery("<div>").html(data).evalScripts();

    return data;
}
您还需要在后面的处理程序代码顶部添加System.IO

步骤4: 将此脚本添加到JS文件原型之后的头部

<script language="javascript" type="text/javascript">
    $(document).ready(function () { 
    function ajaxFileUpload(mode) {
        var fupl = 'fileToUpload';
        var fileName = $('#fileToUpload').val();
        if (fileName == "" || fileName == null)//if user doesn't select an image
        {
            $("#loading").html("");
            $("#loading").append("<br/><b>Please select an image...</b>");
        }
        else {
            var vars = fileName.split("."); //get file extension.
            if (vars[1].toString().toLowerCase() != "jpg") {//check the file extension.
                $("#loading").html("");
                $("#loading").append("<br/>The image format is not valid !.");
                return false;
            }
            $("#loading").ajaxStart(function () { $('#dialogUpdateLicense :input').attr('disabled', true); $(this).show(); })
      .ajaxComplete(function () { $('#dialogUpdateLicense :input').removeAttr('disabled'); });
            $("#loading").html("");
            $("#loading").append("<br/><b>Please wait...</b>");
            $.ajaxFileUpload
        ({
            url: 'FileHandler.ashx',
            secureuri: false,
            fileElementId: 'fileToUpload',
            dataType: 'json',
            data: { Action: mode },
            success: function (data) { 
              if (data.result == "successed")
                  $("#loading").html("The image uploaded successfully!.");
            },
            error: function (data, e) {
                $("#loading").html("An error occured!.");
            }
        })
        } 
        return false; 
    } 
</script>
所有的东西都经过测试,对我来说都正常工作


我希望它能对您有所帮助。

您是使用WebForm还是MVC?我只使用WebFrom。谢谢您的回复。我是这个领域的新手。我想将图像存储在一个文件夹中。403我尝试发布时处理程序出现禁止的错误
 <script src="Scripts/jquery-1.7.2.min.js" type="text/javascript"></script> 
<script src="Scripts/fileUploader.js" type="text/javascript"></script>
<input id="fileToUpload" type="file" size="45" name="fileToUpload" />
<button id="btnUploadNewLicense" onclick="return ajaxFileUpload('New');">
    Upload</button><br />
<div id="loading" style="display: none;">
    Please wait...</div>
 public void ProcessRequest(HttpContext context)
    {
        HttpRequest request = context.Request;
        HttpResponse response = context.Response;
        string action = request["Action"];
        switch (action)
        {
            case "New":
                string result = "failed";
                try
                {
                    string fileName = SaveCaper(context);
                    result = "successed";
                    response.Write("{\"result\":" + result.ToString().ToLower() + "}");
                }
                catch
                {
                    response.Write("{\"result\":" + result.ToString().ToLower() + "}");
                }
                break;
            default:
                throw new Exception("Invalid sort column name!.");
        }
    }
    private string SaveCaper(HttpContext context)
    {
        string fileName = string.Empty;
        string path = context.Server.MapPath("~/NewImages");
        if (!Directory.Exists(path))
            Directory.CreateDirectory(path);
        try
        {
            var file = context.Request.Files[0];
            if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE")
            {
                string[] files = file.FileName.Split(new char[] { '\\' });
                fileName = files[files.Length - 1];
            }
            else
            {
                fileName = file.FileName;
            }
            string strFileName = fileName;
            fileName = Path.Combine(path, fileName);
            try
            {
                file.SaveAs(fileName);
            }
            catch (Exception exp)
            {
                //log the exception
            }
        }
        catch (Exception exp)
        {
            //log the exception
        }
        return fileName;
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
<script language="javascript" type="text/javascript">
    $(document).ready(function () { 
    function ajaxFileUpload(mode) {
        var fupl = 'fileToUpload';
        var fileName = $('#fileToUpload').val();
        if (fileName == "" || fileName == null)//if user doesn't select an image
        {
            $("#loading").html("");
            $("#loading").append("<br/><b>Please select an image...</b>");
        }
        else {
            var vars = fileName.split("."); //get file extension.
            if (vars[1].toString().toLowerCase() != "jpg") {//check the file extension.
                $("#loading").html("");
                $("#loading").append("<br/>The image format is not valid !.");
                return false;
            }
            $("#loading").ajaxStart(function () { $('#dialogUpdateLicense :input').attr('disabled', true); $(this).show(); })
      .ajaxComplete(function () { $('#dialogUpdateLicense :input').removeAttr('disabled'); });
            $("#loading").html("");
            $("#loading").append("<br/><b>Please wait...</b>");
            $.ajaxFileUpload
        ({
            url: 'FileHandler.ashx',
            secureuri: false,
            fileElementId: 'fileToUpload',
            dataType: 'json',
            data: { Action: mode },
            success: function (data) { 
              if (data.result == "successed")
                  $("#loading").html("The image uploaded successfully!.");
            },
            error: function (data, e) {
                $("#loading").html("An error occured!.");
            }
        })
        } 
        return false; 
    } 
</script>