前端如何实现图片上传到数据库 (前端上传图片到数据库)

随着互联网技术的发展,我们使用网络的频率越来越高。在我们的日常生活中,我们经常需要上传图片到服务器,例如社交网站、电子商务平台等等。但是,如何实现图片上传是一个需要解决的问题。在本篇文章中,我们将探讨的方法。

步骤一:创建一个上传表单

我们需要创建一个页面,让用户可以选择要上传的图片。为了实现上传功能,我们需要使用HTML表单。以下是一个简单的表单,用于演示如何上传图片。

“`

“`

此表单包含一个文件选择器和一个提交按钮。文件选择器用于选择要上传的图片,提交按钮用于提交表单。

步骤二:创建一个上传脚本

我们需要一个服务器端的脚本来处理上传的图片。我们将上传的图片保存在数据库中。在这个脚本中,我们首先需要连接到数据库。下面是一个简单的PHP脚本,用于演示如何将上传的图片保存到数据库中。

“`

$servername = “localhost”; //数据库地址

$username = “username”; //数据库用户名

$password = “password”; //数据库密码

$dbname = “database_name”; //数据库名

//创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

//检查连接是否成功

if ($conn->connect_error) {

die(“Connection fled: ” . $conn->connect_error);

}

//只有在用户点击提交按钮时才会运行以下if语句,上传图片并将其保存到数据库中

if(isset($_POST[“submit”])) {

//获取文件名

$filename = $_FILES[“fileToUpload”][“name”];

//获取文件类型

$filetype = $_FILES[“fileToUpload”][“type”];

//获取文件大小

$filesize = $_FILES[“fileToUpload”][“size”];

//获取文件内容

$filedata = file_get_contents($_FILES[“fileToUpload”][“tmp_name”]);

//将文件内容转换成base64编码

$base64 = base64_encode($filedata);

//将base64编码的图片数据插入到数据库中

$sql = “INSERT INTO images (filename, filetype, filesize, filedata) VALUES (‘$filename’, ‘$filetype’, ‘$filesize’, ‘$base64’)”;

if ($conn->query($sql) === TRUE) {

echo “Image uploaded successfully”;

} else {

echo “Error uploading image: ” . $conn->error;

}

}

//关闭连接

$conn->close();

?>

“`

在这个脚本中,我们使用了mysqli连接数据库,并且判断数据库连接是否成功。在用户点击提交按钮时,我们获取了上传图片的文件名、文件类型、文件大小和文件内容。然后,我们将文件内容转换成base64编码,并将其存储在数据库中。我们显示了一条信息,表明图片上传成功或失败。

步骤三:显示上传的图片

现在我们已经将图片成功上传到数据库中,接下来我们需要从数据库中检索出这些图片并显示它们。下面是一个简单的PHP脚本,用于从数据库中检索出图片并将其显示在页面上。

“`

$servername = “localhost”; //数据库地址

$username = “username”; //数据库用户名

$password = “password”; //数据库密码

$dbname = “database_name”; //数据库名

//创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

//检查连接是否成功

if ($conn->connect_error) {

die(“Connection fled: ” . $conn->connect_error);

}

//从数据库中检索出所有的图片

$sql = “SELECT * FROM images”;

$result = $conn->query($sql);

//输出所有的图片

if ($result->num_rows > 0) {

while($row = $result->fetch_assoc()) {

echo “
“;

}

} else {

echo “0 results”;

}

//关闭连接

$conn->close();

?>

“`

在这个脚本中,我们从数据库中检索出所有的图片,并使用while循环输出每一张图片。我们将每张图片的base64编码添加到标签中的src属性中,这样浏览器就可以正确地显示这些图片了。

:本篇文章探讨了如何使用HTML表单上传图片,并将图片保存在数据库中。我们使用了一个服务器端的脚本来处理上传的图片,并将其转换成base64编码并存储在数据库中。我们使用PHP脚本从数据库中检索出所有的图片并显示它们。希望这篇文章能够帮助你理解的方法。

相关问题拓展阅读:

  • java如何将图片保存在数据库中
  • 在ASP中,如何把图片和文字同时保存到数据库中,并在需要时同时输出。
  • 前端使用form表单提交图片后,java后台怎么获取该图片?

java如何将图片保存在数据库中

找到你汤姆猫或者其他服务器的目激扰弯录,找到你的项目李搏,然后对比你localhost:port/ooxx是什么样的就知道相对路劲是什么样的了,这样就取到了图明闷片

一般都是这样的,就是在你服务器有一个专门放置图片的文件夹,然后数据库保存的是你服务器图片的路径。需要用的时候就去数据库里面取路径。得到路径以后你想怎么处理图片是你的事情了。

至于如何去数据库取路径这个就是简单的db操作。

加载驱动类:

Class.forName(DBDriver);

获取连接:

Connection conn = DriverManager.getConnection(url,username,password);

创建操作对象:

PreparedStatement stmt = con.prepareStatement(sql);

执行操作:

ResultSet rs = stmt.executeQuery();

遍历结果:

List list = new ArrayList();

while(rs.next()){

//具体操作,通常用rs.getString(name)取值

Image img = new Image();//图片类冲伏对应你数据库中图片表格

img.setSrc(rs.getString(“src”));//假设你数据库中image表中图片地址字段是src

list.add(img);

}

记得关闭资源:

rs.close();

stmt.close();

con.close();

看你的意思是已经取出来了不知道怎么显示:

你取出来之后可以把图片放在一个list里面然后去页面上遍历这个list

首闷

大致应该是这样

一般都局轿空是存路径,

1。首先图片定义好名称存放到指定路径下

2。读的时候把取出路径,在桐瞎前端页面上使用

<img src=”” align=”center”>”帆帆>

不想存路径可以把图片转成2进制存入数据库,用BLOB类型,用IO流读出了,输出。

你可以参考下这个例子。至于你说的保存图片方式,主要看客户要求了。 有些以二进制存到数据库中. 有些存路径。后台返回一个string类型的路径耐升衫 然后在呈现页面定义一个img标签笑猛的src设置成该路径昌腔即可.

在ASP中,如何把图片和文字同时保存到数据库中,并在需要时同时输出。

假设有这样一个表单。

表单首哗能提交图片,也能提交文字。内容提交到upload.asp去处理。下面是upload.asp里面的部分内容。

0 or thisdatastartnull then

thistemp=thisdatastart+len(thisstr2)

thiscishu=thiscishu+1

if thiscishu=thisN then

strN=thisdatastart

exit for

end if

end if

next

if thiscishu0 or thisdatastartnull then

thistemp=thisdatastart+len(thisstr2)

thiscishu=thiscishu+1

end if

next

mynumberb=thiscishu

end function

‘查询二进制数据流thisstr2在thisstr1里面第thisN次出现的位置,如果没有出现,返回空。

‘这个函数很有用,比如表单传过来的数据都是用回车换行符号隔开的。只需要查询回车换行符号第4次出现的位置和第五次出现的位置,就能找到文件二进制数据开始和结束的位置。如果表单发送过来的是文本信息,只需要找到回车换行符号第三次出现的位置和第四次出现的位置,就能找到文本的二进制数据。然后二进制转文本,就提取出文本内容了。

function strNb(thisN,thisstr1,thisstr2)

thistemp=1

for thiss=1 to len(thisstr1)

thisdatastart=instrb(thistemp,thisstr1,thisstr2)

if thisdatastart=0 or thisdatastart=null then

exit for

end if

if thisdatastart0 or thisdatastartnull then

thistemp=thisdatastart+len(thisstr2)

thiscishu=thiscishu+1

if thiscishu=thisN then

strNb=thisdatastart

exit for

end if

end if

next

if thiscishu

以上提供的思路既然可以图片文字一起提交,也可以在不知道表单提交数据条数的情况下批量混合提交图片和文字信息。原理是死的,人的思路是活的。活学活用更好。

数据库是存文本的

如果你实在想把图片存在数据库也可以

把图片转换成2进制数

然后显示图片的时候从数据库取出再把2进制亏塌数转换成图片

我觉得没必要

楼上整洁

图片地址

或者名称

存到数据库就行了

这里建议

一个图片文件夹更好不要超过1000个目录或者图片

如果图片不是很多按年月来划分文件夹

如果很多

按年月耐空或日

3层目录昌伍存放

前端使用form表单提交图片后,java后台怎么获取该图片?

首先在html的form添加:enctype=”multipart/form-data”

// Java代码

@RequestMapping(“/upload”   )  

    public String addUser(@RequestParam(“file”) CommonsMultipartFile files,HttpServletRequest request){  

for(int i = 0;i” + files.getOriginalFilename());  

if(!files.isEmpty()){  

  int pre = (int) System.currentTimeMillis();  

  try {  

      //拿到输出流,同时重命名上传的文件  

      FileOutputStream os = new FileOutputStream(“H:/” + new Date().getTime() + files.getOriginalFilename());  

      //拿到上传文件的输入流  

      FileInputStream in = (FileInputStream) files.getInputStream();  

      //以写字节的方式写文件  

      int b = 0;  

      while((b=in.read()) != -1){  

os.write(b);  

      }  

      os.flush();  

      os.close();  

      in.close();  

      int finaltime = (int) System.currentTimeMillis();  

      System.out.println(finaltime – pre);  

  } catch (Exception e) {  

      e.printStackTrace();  

      System.out.println(“上传出错”);  

  }  

}  

}  

return “/success”;  

    }

上传图片 后台获取的时候直接从数据库拿路径

下面这是servlet的内容:

package demo;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.ProgressListener;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class DemoServlet extends HttpServlet {

private static final String UPLOAD_DIRECTORY = “upload”;

private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3; // 3MB

private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB

private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

DiskFileItemFactory factory=new DiskFileItemFactory();

ServletFileUpload sfu=new ServletFileUpload(factory);

sfu.setHeaderEncoding(“UTF-8”);

sfu.setProgressListener(new ProgressListener() {

public void update(long pBytesRead, long pContentLength, int pItems) {

System.out.println(“文件大小为:”+pContentLength+”,当前已处理:”+pBytesRead);

}

});

//判断提交上来的数据是否是上传表单的数据

if(!ServletFileUpload.isMultipartContent(request)){

PrintWriter writer= response.getWriter();

writer.println(“Error:表单必须包含 enctype=multipart/form-data”);

writer.flush();

return;

}

factory.setSizeThreshold(MEMORY_THRESHOLD);

//设置临时储存目录

factory.setRepository(new File(System.getProperty(“java.io.tmpdir”)));

//设置更大文件上传值

sfu.setFileSizeMax(MAX_FILE_SIZE);

//设置更大请求值(包含文件和表单数据)

sfu.setSizeMax(MAX_REQUEST_SIZE);

String uploadpath=getServletContext().getRealPath(“./”)+ File.separator+UPLOAD_DIRECTORY;

File file=new File(uploadpath);

if(!file.exists()){

file.mkdir();

}

try {

List formItems = sfu.parseRequest(request);

if(formItems!=null&&formItems.size()>0){

for(FileItem item:formItems){

if(!item.isFormField()){

String fileName=new File(item.getName()).getName();

String filePath=uploadpath+File.separator+fileName;

File storeFile=new File(filePath);

System.out.println(filePath);

item.write(storeFile);

request.setAttribute(“message”, “文件上传成功!”);

}

}

}

} catch (Exception e) {

request.setAttribute(“message”, “错误信息:”+e.getMessage());

}

getServletContext().getRequestDispatcher(“/demo.jsp”).forward(request, response);

}

}

下面是jsp的内容,jsp放到webapp下,如果想放到WEB-INF下就把servlet里转发的路径改一下:

Insert title here

图片要使用文件上传的方式。既然你使用spring框架的话,那就用它本身的上传配置。

你在spring配置文件中加上这个:

//后台

public String addUser(@RequestParam(“file”) MultipartFile myfile,HttpServletRequest request) throws IOException{

//下面这个方法可以实现文件上传到服务器

//不懂的话可以查下spring API

FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(realPath, myfile.getOriginalFilename()));

}

前端上传图片到数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于前端上传图片到数据库,前端如何实现图片上传到数据库,java如何将图片保存在数据库中,在ASP中,如何把图片和文字同时保存到数据库中,并在需要时同时输出。,前端使用form表单提交图片后,java后台怎么获取该图片?的信息别忘了在本站进行查找喔。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《前端如何实现图片上传到数据库 (前端上传图片到数据库)》
文章链接:https://zhuji.vsping.com/48937.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。