阅读背景:

如何用jQuery将辅助信息合并到二进制文件里一起上传到WCF

来源:互联网 
<body>
    <input id="File" type="file">    
    <script>
        function SendFileToServer(filename, filecontent) {
            $.ajax({
                type: "POST",
                url: "https://localhost:3686/UploadFileService.svc/uploadimg",
                dataType: 'application/json; charset=utf-8',
                cache: false,
                processData: false,
                data: filecontent,
                success: function (data) {
                    console.log(data);
                }
            });
        }
        // File控件选择一个文件时触发change后的函数
        $('#File').change(function (evt) {
            // 界面中有type=file的input控件
            if (evt.target.files.length > 0) {
                // 遍历所有type=file的input控件
                for (var i = 0; i < this.files.length; i++) {
                    var file = this.files[i];
                    var reader = new window.FileReader();
                    // 定义执行下面reader.readAsArrayBuffer后触发的load事件的处理函数
                    reader.onload = function (rResult) {
                        // 生成文件名
                        var filename = "Test";
                        // 设置一起传递的辅助信息,这里包含sessionId、 imageType、fileExtName三项数据
                        var obj = {};
                        obj.sessionId = $("#sessionId").val();
                        obj.imageType = 1;
                        obj.fileExtName = "png";
                        var jsonShop = JSON.stringify(obj);
                        // 把字符串转换成由字符ASCII码组成的数组
                        var arr = Array.prototype.map.call(jsonShop, function (c) { return c.charCodeAt(0); });
                        // 在上述数组前面加入1个字符长度的数据,用以表示数组长度
                        arr.unshift(arr.length);
                        // 创建一个全新的ArrayBuffer,长度为上述数组长度+文件长度
                        var buffer = new ArrayBuffer(rResult.target.result.byteLength + arr.length);
                        // 生成视图,因为只有在视图里才能读取和插入数据
                        var dataview = new DataView(buffer);
                        // 把数组推入视图
                        for (var i = 0; i < arr.length; i++) {
                            dataview.setUint8(i, arr[i]);
                        }
                        // 因为r<body>
    <input id="File" type="file">   



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: