HTML 5ファイルドメイン+FileReaderファイルを読み込みサーバにアップロード(3)

14105 ワード

一、ファイルをblobとして読み込んでサーバーにアップロードする
HTML
<div class="container">
    
    <input type="file" id="file"  />
    <input type="button" id="btn1" value="    " onclick="uploadClick();" />
div>

JS
//      ,       
var fileBox = document.getElementById('file');
fileBox.onchange = function () {
    //         
    var fileList = fileBox.files;
    for (var i = 0; i < fileList.length; i++) {
        var file = fileList[i];
        uploadFile(file);
    }
}
//          
function uploadFile(file) {
    var reader = new FileReader();
    reader.readAsArrayBuffer(file);
    reader.onload = function () {
        var blob = new Blob([reader.result]);
        //      
        var fd = new FormData();
        fd.append('file', blob);
        var ext = file.name.substring(file.name.lastIndexOf('.'));
        fd.append('extention', ext);
        fd.append('maxsize', 1024*1024*4);//Asp.net         4MB
        fd.append('isClip', -1);
        var xhr = new XMLHttpRequest();
        xhr.open('post', '../ashx/upload.ashx', true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var data = eval('(' + xhr.responseText + ')');
                console.info(data);
                if (data.success) {
                    //    
                    var imgName = data.msg;
                    alert(imgName);
                } else {
                    alert(data.msg);
                }
            }
        }
        //    
        xhr.send(fd);
    }
}

バックグラウンドC#処理キー:
//    
HttpRequest req = _Context.Request;
string newname = _fileInfo.CreateNewName(newExtention);
//          
Stream stream = _PostedFile.InputStream;
byte[] dataOne = new byte[stream.Length];
stream.Read(dataOne, 0, dataOne.Length);
FileStream fs = new FileStream(_fileInfo.TempFile + newname, FileMode.Create, FileAccess.Write);
try
{
    fs.Write(dataOne, 0, dataOne.Length);
}
finally
{
    fs.Close();
    stream.Close();
}
return newname;

二、画像ファイルを読み取り、サーバーにアップロードする
HTML
<div class="container">
    
    <input type="file" id="file" accept="image/*" />
    <input type="button" id="btn1" value="    " onclick="uploadClick();" />
    <h4>      :h4>
    <img src="" id="img1" />
div>

JS:
//      ,       
var fileBox = document.getElementById('file');
fileBox.onchange = function () {
    //         
    var fileList = fileBox.files;
    for (var i = 0; i < fileList.length; i++) {
        var file = fileList[i];
        //           
        if (/image\/\w+/.test(file.type))
            readFile(file);
        else
            console.log(file.name + ':    ');
    }
}
//
function uploadClick() {
    var fileList = fileBox.files;
    for (var i = 0; i < fileList.length; i++) {
        var file = fileList[i];
        //           
        if (/image\/\w+/.test(file.type))
            uploadFile(file);
        else
            console.log(file.name + ':    ');
    }
}
//          
function uploadFile(file) {
    var reader = new FileReader();
    reader.readAsArrayBuffer(file);
    reader.onload = function () {
        var blob = new Blob([reader.result], { type: 'image/jpg' });
        //      
        var fd = new FormData();
        fd.append('file', blob);
        var ext = file.name.substring(file.name.lastIndexOf('.'));
        fd.append('extention', ext);
        fd.append('isClip', -1);
        var xhr = new XMLHttpRequest();
        xhr.open('post', '../ashx/upload.ashx', true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var data = eval('(' + xhr.responseText + ')');
                console.info(data);
                if (data.success) {
                    //    
                    var imgName = data.msg;
                    alert(imgName);
                } else {
                    alert(data.msg);
                }
            }
        }
        //    
        xhr.send(fd);
    }
}
//        DataURL
function readFile(file) {
    var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function (e) {
        var result = reader.result;
        $('.container blockquote').text(result);
        $('#img1').attr('src', result)
    }
}

バックグラウンドキーの処理は同じです.
ファイル2を読み込みます.http://www.cnblogs.com/tianma3798/p/5839791.html
ファイル1を読み込みます.http://www.cnblogs.com/tianma3798/p/4355949.html