<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">