public MessageObjectPO<UploadPO> OnPostUpload(UploadRO uploadRO) {
var response = new MessageObjectPO<UploadPO>();
Guid guid = Guid.NewGuid();
string FilePath = _serverSettings.SafetyRuleTempPath + "\\" + guid + "\\";
DirectoryInfo di = new DirectoryInfo(FilePath);
if (!di.Exists) {
di.Create();
}
using (var stream = System.IO.File.Create(FilePath + "\\" + uploadRO.fileName)) {
byte[] bytes = uploadRO.content;
stream.Write(bytes, 0, uploadRO.content.Length);
response.Data = new UploadPO() {
Edition = DateTime.Now.DayOfYear,
Revision = 0,
MinorVersion = 0,
OperativeFrom = DateTime.Now,
VersionFileSharePointPath = FilePath.Replace(@"\\", @"\"),
VersionFileName = uploadRO.fileName,
VersionFileSize = uploadRO.fileSize / 1024 / 1024,
VersionId = Guid.NewGuid(),
};
}
response.StatusCode = HttpStatusCode.OK;
return response;
}
 public class UploadRO {
public string uid { get; set; }
public string fileName { get; set; }
public int fileSize { get; set; }
public byte[] content { get; set; }
}
function onSaveRequest(
files: UploadFileInfo[],
options: { formData: FormData; requestOptions: any },
onProgress: (uid: string, event: ProgressEvent<EventTarget>) => void
): Promise<{ uid: string }> {
const currentFile = files[0] as UploadFileInfo;
const uid = currentFile.uid;
const saveRequestPromise = new Promise<{ uid: string }>( (resolve, reject) => {
// as currently configured it is impossible to request a save from the UI if there are validation errors, but that can be changed so keeping this check in place
if (currentFile.validationErrors && currentFile.validationErrors.length > 0) {
reject({ uid: uid });
} else {
const reader = new FileReader();
// onload is executed when the load even is fired i.e. when content read with readAsArrayBuffer, readAsBinaryString, readAsDataURL or readAsText is available
reader.onload = () => {
if (reader.result && typeof reader.result === "string") {
// stripping the data-url declaration as per https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL
const base64Result = reader.result.split(",")[1];
// update viewModel and resolve
const fileUpload: IFileUploadViewModel = { uid: uid, fileName: currentFile.name, fileSize: currentFile.size!, content: base64Result};
Handler_Upload(fileUpload);
resolve({ uid: uid });
} else {
reject({ uid: uid });
}
};
// onprogress is fired periodically as the FileReader reads data and the ProgressEvent can be passed directly to the Upload control, handy!
reader.onprogress = (data) => {
reader.readAsArrayBuffer(currentFile.getRawFile!())
console.log(data)
onProgress(uid, data);
};
// if the read is not completed due to error or user intervention, reject
reader.onabort = () => {
reject({ uid: uid });
};
reader.onerror = () => {
reject({ uid: uid });
}; reader.readAsDataURL(currentFile.getRawFile!());
}
}); return saveRequestPromise;
}
const pageTable = (
<div>
<Upload
{...fileProps}
batch={false}
multiple={false}
defaultFiles={[]}
showFileList={true}
restrictions={{
allowedExtensions: [".pdf"],
}}
withCredentials={true}
onAdd={onAdd}
onProgress={onProgress}
onStatusChange={onStatusChange}
onBeforeUpload={onBeforeUpload}
onRemove={onRemove}
saveUrl={onSaveRequest}
/>
</div>
)
return <>{pageTable}</>
  beforeUpload(file, fileList) {
var reader = new FileReader();
const image = new Image();
var height;
var width;
var base64Url;
//因为读取文件需要时间,所以要在回调函数中使用读取的结果
reader.readAsDataURL(file); //开始读取文件
reader.onload = (e) => {
image.src = reader.result;
image.onload = () => {
height = image.naturalHeight;
width = image.naturalWidth;
base64Url= e.target.result, //cropper的图片路径
}
}
return false;
}

react ts 上传的更多相关文章

  1. 前端(react)上传到阿里云OSS存储 实例

    需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...

  2. 基于Node的React图片上传组件实现

    写在前面 红旗不倒,誓把JavaScript进行到底!今天介绍我的开源项目 Royal 里的图片上传组件的前后端实现原理(React + Node),花了一些时间,希望对你有所帮助. 前端实现 遵循R ...

  3. 分享一个react 图片上传组件 支持OSS 七牛云

    react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 排序等功能 需要 react 版本大于 v ...

  4. 将HTML页面自动保存为PDF文件并上传的两种方式(一)-前端(react)方式

    一.业务场景 公司的样本检测报告以React页面的形式生成,已调整为A4大小的样式并已实现分页,业务上需要将这个网页生成PDF文件,并上传到服务器,后续会将这个文件发送给客户(这里不考虑). 二.原来 ...

  5. React + js-xlsx构建Excel文件上传预览功能

    首先要准备react开发环境以及js-xlsx插件 1. 此处省略安装react安装步骤 2.下载js-xlsx插件 yarn add xlsx 或者 npm install xlsx 在项目中引入 ...

  6. 上传文件Base64格式(React)

    记录一下上传文件时将文件数据转为Base64的方法 通过 FileReader对象创建一个实例,然后使用 readAsDataURL方法将数据转为Base64格式 注意: 读取过程是异步的 绑定onl ...

  7. react native中如何往服务器上传网络图片

    let common_url = 'http://192.168.1.1:8080/'; //服务器地址 let token = ''; //用户登陆后返回的token /** * 使用fetch实现 ...

  8. react native android 上传文件,Nodejs服务端获取上传的文件

    React Native端 使用react-native-image-picker 做出选择图片的操作,选择完成后,直接将图片Post至服务器,保存在服务器的某个地方(保存图片的路径需要公开显示),并 ...

  9. 60分钟课程: 用egg.js实现增删改查,文件上传和restfulApi, webpack react es6 (一)

    今天开始我将写nodejs框架egg.js, react 实现的增删改查,文件上传等常用的b/s场景,这个将分3部分来写. 会让你在60分钟内快速 入口并应用~  你应该用es6, node,或是ph ...

  10. (转)React Native 使用react-native-image-picker库实现图片上传功能

    react-native-image-picker作为一个集成相机和相册的功能的第三方库,因为其使用相对简单受到前端开发人员的喜爱. react-native-image-picker使用 首先,安装 ...

随机推荐

  1. list.ftl

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...

  2. python发送钉钉消息通用脚本

    1.使用shell生成需要发送的内容. 2.调用该脚本发送文本内容python3,其中的文件 /wj/sbjk,需要改成直接需要发送的文件. [root@manager dingding]# more ...

  3. R.swift 使用详解

    R.Swift 能快速访问本地图片.颜色.字体等资源的一个库 使用介绍 1.工程中倒入R.swift 以pod为例 pod 'R.swift' 2.配置执行脚本 "$PODS_ROOT/R. ...

  4. springcloud zuul网关整合swagger2,swagger被拦截问题

    首先感谢一位博主的分享https://www.cnblogs.com/xiaohouzai/p/8886671.html 话不多说直接上图和代码 首先我们要有一个springcloud分布式项目 我就 ...

  5. 针对Vmware打开BIOS中VT虚拟化相关后仍然报错

    安装虚拟机时报错问题现象:  通过VMware虚拟机安装Centos时提示弹出提示框,"已将该虚拟机配置为使用64位客户机操作系统,但是,无法执行64位操作."具体提示如下图所示: ...

  6. .net core 根据需求不同的数据有不同的颜色

  7. 5. nginx跨域配置

    1.跨域问题处理:在nginx相关接口上配置如下: 如接口有自己的请求头,则加上:如接口自带请求头pubacc-buid if ($request_method = "OPTIONS&quo ...

  8. SpringMVC的学习day01

    什么是SpringMVC 基于狂神说SpringMVC课程的学习 前面已经学习了spring.javaSE.javaweb.mybatis等知识,今天开始学习springMVC,是ssm框架的最后一个 ...

  9. 牛客算法进阶——树形dp

    1. 小G有一个大树(求树的重心) 删除该点后最大连通块的节点数最小 设f[x]表示以x为根的子树大小,那么删除x之后的各子树大小为f[to]和n-f[x] 求max(max(f[to]),n-f[x ...

  10. Linux编译安装中的--prefix

    本文主要说明--prefix参数的作用,其主要用在编译安装源代码应用中的./configure环节. 1.源码安装一般包括几个步骤:配置(configure),编译(make),安装(make ins ...