java编程:怎么用JSP(javabean)上传一张图片到服务器的指定文件夹呢?

java编程:怎么用JSP(javabean)上传一张图片到服务器的指定文件夹呢?,第1张

先导smartupload jar包!在写form表单<input tyle="file" enctype="multipart/form-data" method="post">enctype和method别写错了!

写一个简单的吧!

<%page import="comjspsmartupload"%>

<%

SmartUpload su=new SmartUpload ();//初始化SmartUpload对象

try{ //捕获他可能出现的异常

suupload();//执行上传

}catch(Exception ex){

exprintStackTrace;

}

File file=sugetFile()getFile(0); //(得到单个的上传文件的信息)这里得到的File对象是你到的jar包里的comjspsmartuploadFile类型 别写成IO 里面的File了

String filepath="upload\\"; //在这之前要在你所建项目的目录下单建一个upload文件夹

filepath+=filegetFileName();

filesaveAs(filepath,SmartUploadSAVE-VIRTUAL);

不知道是否建了与它相对应的数据库表啊?

不懂得再玩吧!

%>

qs1: 前端上传并展示

an1: 上传file格式转为base64格式

qs2: 要将上传的在宽高固定的窗口里显示完整

an2: 把获取的base64的链接,赋值到image的src上,然后获取到的宽高比例;再与窗口宽高比例对比,选择以高占满还是以宽占满。

#### 具体实现:

结构:

<div class="upload">

<div class="img-box">

<div class="image-no" @clickstop="openFile" v-if="!imageurl">

<div class="tip">

<img src="///assets/myopus/icon-uploadpng" alt="" />

<div class="text">请上传您的照片</div>

</div>

</div>

<div ref="window" class="image-yes" @clickstop="openFile" v-else>

<div class="img">

<img :style="isWidth 'width:89333333vw' : 'height: 56vw'" :src="imageurl" alt="" />

</div>

</div>

<input

type="file"

ref="selectFileImg"

accept="image/"

v-show="false"

@change="selectFileImg"

/>

</div>

<div class="des-box">

<van-field

class="des"

v-model="des"

rows="3"

autosize

type="textarea"

maxlength="20"

placeholder="请简要描述您的照片,体现环保美~"

show-word-limit

/>

</div>

<div class="submit">

<button @clickstop="submit()">确认上传</button>

</div>

</div>

数据:

isWidth: true, // 上传的展示时,是以宽为主还是高为主

image: {

file: null,

url: null,

},

des: '', // 照片描述文字

方法:

// 创建点击事件并出发file选择

openFile() {

const click = new windowMouseEvent("click");

this$refsselectFileImgdispatchEvent(click);

},

// 文件选择

selectFileImg() {

const input = this$refsselectFileImg;

const files = inputfiles;

if (fileslength < 1) return;

const image = files[0];

const size = 20 1024 1024; // 限定大小

if (!imagetypeincludes("image")) {

this$toast("必须上传");

inputvalue = "";

return;

}

if (imagesize > size) {

this$toast("大小不能超过20M");

inputvalue = "";

return;

}

thisimagefile = image;

// 转为base64格式

var reader = new FileReader();

readerreadAsDataURL(image);

readeronload = (e) => {

thisimageurl = ecurrentTargetresult

// 新建image元素,获取宽高比,与用户上传的宽高比 进行比较,得出用宽还是占满

var image = new Image();

imagesrc = thisimageurl

imageonload= () => {

// 获取上传宽高

const width = imagewidth;

const height = imageheight;

// consolelog(width,height)

// 获取窗口宽高比

const window = this$refswindow

// consolelog(windowoffsetHeight, windowoffsetWidth)

const key = windowoffsetWidth/windowoffsetHeight

const mykey = width/height

if(mykey <= key) return thisisWidth = false

thisisWidth = true

}

};

},

// 上传接口

submit() {

if(!thisimageurl) return this$toast('请上传您的照片')

if(!thisdestrim()) return this$toast('请输入照片简述')

consolelog("开始上传")

},

样式:

<style lang="scss" scoped>

upload {

width: 100vw;

min-height: 100vh;

img-box {

width: 89333333vw;

height: 56vw;

overflow: hidden;

border: 1px dashed #ec851a;

border-radius: 32vw;

margin: 4vw auto;

image-no {

width: 89333333vw;

height: 56vw;

background: rgba(236, 133, 26, 004);

display: flex;

justify-content: center;

align-items: center;

tip {

img {

display: block;

width: 10vw;

margin: 0 auto 3vw;

}

text {

font-size: 14px;

color: #ec851a;

letter-spacing: 1px;

}

}

}

image-yes {

width: 89333333vw;

height: 56vw;

display: flex;

justify-content: center;

align-items: center;

img {

img {

display: block;

}

}

}

}

des {

width: 89333333vw;

background-color: #fbfbfb;

border-radius: 32vw;

margin: 0 auto 8vw;

::v-deepvan-field__control {

font-size: 14px;

}

::v-deepvan-field__word-limit {

font-size: 14px;

color: #c9c9c9;

}

}

submit {

text-align: center;

button {

width: 40vw;

height: 112vw;

background-color: #ec851a;

border: none;

border-radius: 5333333vw;

outline: none;

font-size: 16px;

color: #fff;

}

}

}

</style>

1、使用form表单提交

但是这里要记得添加enctype属性,这个属性是指定form表单在向服务器提交之前,对表单数据如何进行编码。 文件域中的name="file"属性的值,需要和后台接收的对象名一致,不然接收不到。

2、使用ajax提交文件

使用ajax提交首先引入jquery-formjs文件才能实现,接着使用上面的html代码,加入以js则可以实现ajax提交文件。

3、使用FormData对象

4、后台接收文件,框架采用的Spring Boot 微服务框架,因为该框架搭建很方便所以采用这个框架写例子。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java编程:怎么用JSP(javabean)上传一张图片到服务器的指定文件夹呢?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情