当前位置: 移动技术网 > IT编程>开发语言>.net > 图片上传至服务器

图片上传至服务器

2018年10月23日  | 移动技术网IT编程  | 我要评论

好火药,星辰飞飞,郭mini露点

前台html

<img style="display:none;" id="showimg" src="" />
<br />
<!--下面的隐藏域主要用来改变file类型的input的值,但是file类型的input的值出于安全考虑不让修改,但是表单提交后需要处理该值(放置图片路径)来显示服务器上的图片-->
<input type="hidden" id="img" name="uploadimg" />
请选择上传微信二维码收款图片:<input type="file" id="uploadimg" onchange="selectimg(this);" runat="server" />
view code

js

function selectimg(file) {
            if (!file.files || !file.files[0]) {
                return;
            }
            var reader = new filereader();//读取文件
            reader.onload = function (event) {//文件读取完成的回调函数
                image = document.getelementbyid('showimg');
                $('#showimg').show();
                image.src = event.target.result;//读入文件的base64数据(可直接作为src属性来显示图片)
                //图片读取完成的回调函数(必须加上否则数据读入不完整导致出错!)
                image.onload = function () {
                    var formdata = new formdata();
                    formdata.append("file", $("#uploadimg")[0].files[0]);
                    $.ajax({
                        type: "post",
                        url: "/ashx/uploadimg.ashx",//返回图片路径
                        data: formdata,
                        cache: false,
                        contenttype: false,
                        processdata: false,
                        datatype: "json",
                        success: function (result) {
                            if (result.imgurl!= "" && result.error=="") {
                                alert("上传成功");
                                $('#img').val(result.imgurl);
                            }
                            else {
                                alert("上传失败,出现错误:" + result.error);
                            }
                        }
                    });
                }
            }
            //将文件已data url的形式读入页面
            reader.readasdataurl(file.files[0]);
        }
view code

后台ashx

public void processrequest(httpcontext context)
        {
            context.response.contenttype = "text/plain";
            string name = "";
            string savename = "";
            string error = "";
            try
            {
                httpfilecollection _file = context.request.files;
                if (_file.count > 0)
                {
                    //文件大小
                    long size = _file[0].contentlength;
                    //文件类型
                    string type = _file[0].contenttype;
                    //文件名
                    //string name = _file[0].filename;
                    name = _file[0].filename;
                    //文件格式
                    string _tp = system.io.path.getextension(name);

                    if (_tp.tolower() == ".jpg" || _tp.tolower() == ".jpeg" || _tp.tolower() == ".gif" || _tp.tolower() == ".png" || _tp.tolower() == ".swf")
                    {
                        //获取文件流
                        system.io.stream stream = _file[0].inputstream;
                        //保存文件
                        savename = datetime.now.tostring("yyyymmddhhmmss") + _tp;
                        byte[] bytes = new byte[stream.length];
                        stream.read(bytes, 0, bytes.length);
                        // 设置当前流的位置为流的开始
                        stream.seek(0, seekorigin.begin);
                        using (filestream fswrite = new filestream(@"c:\image\" + savename, filemode.append))
                        {
                            fswrite.write(bytes, 0, bytes.length);
                        };
                    }
                }
            }
            catch (exception ex) {
                error = ex.tostring();
            }
            context.response.write("{\"imgurl\":\""+"c:\image\" + savename + "\",\"error\":\""+ error + "\"}");
        }
view code

 

由于业务原因删除了部分代码,此随笔仅供参考,可能尚有部分无用代码未删除干净,如有错误,欢迎指出

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网