Skip to content

如何上传文件到OSS

张弓 edited this page Feb 19, 2021 · 1 revision

上传文件到OSS范例:

jsp内容:

<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="FrmProductImage.upImage">
	<input type="hidden" name="partCode" value="${param.partCode}" />
	<div>
		选择图片-电脑图(pc):
		<input type="file" name="pcFile" id="file1">
	<div>
	</div>
		选择图片-手机图(phone):
		<input type="file" name="phoneFile" id="file2">
	<div>
	</div>
		选择图片-其它图:
		<input type="file" name="otherFile" id="file3">
	</div>
	<div style="padding-top:2em;">
		<button name="uploadImg" value="submit">确认上传</button>
	</div>
</form>

FrmProductImage 内容:

public IPage upImage(){
	String partCode = getRequest().getParameter("partCode");
	// 处理文件上传
	DiskFileItemFactory factory = new DiskFileItemFactory();
	// 设置最大缓存
	factory.setSizeThreshold(5 * 1024);
	ServletFileUpload upload = new ServletFileUpload(factory);
	// 获取所有文件列表
	List<FileItem> uploadFiles = upload.parseRequest(getRequest());
	OssSession oss = (OssSession) this.getHandle().getProperty(OssSession.sessionId);
	// 取出上传的每一个文件
	for (int i = 0; i < uploadFiles.size(); i++) {
		FileItem fileItem = uploadFiles.get(i);
		if (!fileItem.isFormField()) {// 文件名
			if (fileItem.getSize() > 0) {
				String fileName = fileItem.getName().toLowerCase();
				if (fileName.endsWith(".jpg")) {
					if (fileItem.getFieldName().equals("pcFile"))
						fileName = "product-pc.jpg";
					else if (fileItem.getFieldName().equals("phoneFile"))
						fileName = "product-phone.jpg";
					log.info("接收并保存文件:" + fileName);
					oss.upload(this.getCorpNo() + "/sample/" + fileName, fileItem.getInputStream());
				} else {
					throw new RuntimeException("上传失败,请确认上传的文件存在并且类型是图片!");
				}
			}
		} else {
			// 非文件流
			if ("partCode".equals(fileItem.getFieldName()))
				partCode = new String(fileItem.getString().getBytes("ISO-8859-1"), "UTF-8");
		}

	}
	JspPage jspChildPage = new JspPage(this);
	jspChildPage.add("partCode", partCode);
	return new RedirectPage(this, "FrmProductImage.listImages?partCode=" + partCode);
}

summer-db

Clone this wiki locally