java 如何只通过后台把本地的图片上传的服务器上去?

java 如何只通过后台把本地的图片上传的服务器上去?,第1张

这里你弄错了一个问题\x0d\x0a你的程序是要传递图片的二进制数据.\x0d\x0a而不是传递路径,然后再到服务器读取文件数据(你的服务器有这个文件?)\x0d\x0a只有当你的服务器下有这个文件了,你传递一个路径,读取是可以的.\x0d\x0a//---\x0d\x0a关于如何上传文件, 自己google一下,很多教程

我们使用一些已有的组件帮助我们实现这种上传功能。

常用的上传组件:

Apache 的 Commons FileUpload

JavaZoom的UploadBean

jspSmartUpload

以下,以FileUpload为例讲解

1、在jsp端

<form id="form1" name="form1" method="post" action="servlet/fileServlet" enctype="multipart/form-data">

要注意enctype="multipart/form-data"

然后只需要放置一个file控件,并执行submit操作即可

<input name="file" type="file" size="20" >

<input type="submit" name="submit" value="提交" >

2、web端

核心代码如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("UTF-8")

DiskFileItemFactory factory = new DiskFileItemFactory()

ServletFileUpload upload = new ServletFileUpload(factory)

try {

List items = upload.parseRequest(request)

Iterator itr = items.iterator()

while (itr.hasNext()) {

FileItem item = (FileItem) itr.next()

if (item.isFormField()) {

System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"))

} else {

if (item.getName() != null &&!item.getName().equals("")) {

System.out.println("上传文件的大小:" + item.getSize())

System.out.println("上传文件的类型:" + item.getContentType())

System.out.println("上传文件的名称:" + item.getName())

File tempFile = new File(item.getName())

File file = new File(sc.getRealPath("/") + savePath, tempFile.getName())

item.write(file)

request.setAttribute("upload.message", "上传文件成功!")

}else{

request.setAttribute("upload.message", "没有选择上传文件!")

}

}

}

}catch(FileUploadException e){

e.printStackTrace()

} catch (Exception e) {

e.printStackTrace()

request.setAttribute("upload.message", "上传文件失败!")

}

request.getRequestDispatcher("/uploadResult.jsp").forward(request, response)

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/185221.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-29
下一篇2023-03-29

发表评论

登录后才能评论

评论列表(0条)

    保存