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

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

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

很简单。

可以手写IO读写(有点麻烦)。

怕麻烦的话使用FileUpload组件 在servlet里doPost嵌入一下代码

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException{

response.setContentType("text/htmlcharset=gb2312")

PrintWriter out=response.getWriter()

//设置保存上传文件的目录

String uploadDir =getServletContext().getRealPath("/up")

System.out.println(uploadDir)

if (uploadDir == null)

{

out.println("无法访问存储目录!")

return

}

//根据路径创建一个文件

File fUploadDir = new File(uploadDir)

if(!fUploadDir.exists()){

if(!fUploadDir.mkdir())//如果UP目录不存在 创建一个 不能创建输出...

{

out.println("无法创建存储目录!")

return

}

}

if (!DiskFileUpload.isMultipartContent(request))

{

out.println("只能处理multipart/form-data类型的数据!")

return

}

DiskFileUpload fu = new DiskFileUpload()

//最多上传200M数据

fu.setSizeMax(1024 * 1024 * 200)

//超过1M的字段数据采用临时文件缓存

fu.setSizeThreshold(1024 * 1024)

//采用默认的临时文件存储位置

//fu.setRepositoryPath(...)

//设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码

fu.setHeaderEncoding("gb2312")

//得到所有表单字段对象的集合

List fileItems = null

try

{

fileItems = fu.parseRequest(request)//解析request对象中上传的文件

}

catch (FileUploadException e)

{

out.println("解析数据时出现如下问题:")

e.printStackTrace(out)

return

}

//处理每个表单字段

Iterator i = fileItems.iterator()

while (i.hasNext())

{

FileItem fi = (FileItem) i.next()

if (fi.isFormField()){

String content = fi.getString("GB2312")

String fieldName = fi.getFieldName()

request.setAttribute(fieldName,content)

}else{

try

{

String pathSrc = fi.getName()

if(pathSrc.trim().equals("")){

continue

}

int start = pathSrc.lastIndexOf('\\')

String fileName = pathSrc.substring(start + 1)

File pathDest = new File(uploadDir, fileName)

fi.write(pathDest)

String fieldName = fi.getFieldName()

request.setAttribute(fieldName, fileName)

}catch (Exception e){

out.println("存储文件时出现如下问题:")

e.printStackTrace(out)

return

}

finally //总是立即删除保存表单字段内容的临时文件

{

fi.delete()

}

}

}

注意 JSP页面的form要加enctype="multipart/form-data" 属性, 提交的时候要向服务器说明一下 此页面包含文件。

如果 还是麻烦,干脆使用Struts 的上传组件 他对FileUpload又做了封装,使用起来更傻瓜化,很容易掌握。

-----------------------------

以上回答,如有不明白可以联系我。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存