Heim  >  Artikel  >  Web-Frontend  >  Ajax+node js multer ermöglicht die Datei-Upload-Funktion

Ajax+node js multer ermöglicht die Datei-Upload-Funktion

php中世界最好的语言
php中世界最好的语言Original
2018-03-31 10:53:501398Durchsuche

Dieses Mal bringe ich Ihnen die Funktion von Ajax+node js multer zum Datei-Upload. Was sind die Vorsichtsmaßnahmen für Ajax+node js multer zum Hochladen von Dateien? Werfen wir einen Blick auf praktische Fälle.

Anleitung

Als Node-Anfänger arbeite ich derzeit an einer Chat-Software, die Registrierung, Login, Online-Einzel- und Mehrpersonen-Chat unterstützt Chat, Senden von Emoticons, Hoch- und Herunterladen verschiedener Dateien, Hinzufügen und Löschen von Freunden, Speichern von Chat-Datensätzen, Wechseln von Benachrichtigungstönen, Wechseln von Hintergrundbildern, Spielen und anderen Funktionen, also wurde das Multer-Modul nach verschiedenen Dokumentensuchen und Demo-Beispielen verwendet Die Upload-Funktion unterstützt das Hochladen der meisten Dateiformate und zeigt diese gleichzeitig auf der Webseite an

Fühlt es sich nicht so an, als wäre WeChat sofort sichtbar? Falsch, es basiert auf der Webversion von WeChat

Um den Gesamteffekt zu erzielen, muss es getan werden Ich bin ein Front-End-Anfänger und habe es wirklich eilig. Interessierte Freunde können einen Blick darauf werfen 🎜>

und laden Sie den Code direkt unten hoch 🎜>

Multer direkt über das cmd-Befehlsfenster installieren

Servercode

Clientcode

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie auf der chinesischen PHP-Website. Andere verwandte Artikel! Empfohlene Lektüre:

So implementieren Sie eine domänenübergreifende WebApi-Ajax-Anfrage mit CORS
npm install multer -save

//引入http
const http=require("http");
//引入express
const express=require("express");
//引入multer
const multer=require("multer");
//创建服务器,绑定监听端口
var app=express();
var server=http.createServer(app);
server.listen(8081);
//建立public文件夹,将HTML文件放入其中,允许访问
app.use(express.static("public"));
//文件上传所需代码
//设置文件上传路径和文件命名
var storage = multer.diskStorage({
  destination: function (req, file, cb){
    //文件上传成功后会放入public下的upload文件夹
    cb(null, './public/upload')
  },
  filename: function (req, file, cb){
    //设置文件的名字为其原本的名字,也可以添加其他字符,来区别相同文件,例如file.originalname+new Date().getTime();利用时间来区分
    cb(null, file.originalname)
  }
});
var upload = multer({
  storage: storage
});
//处理来自页面的ajax请求。single文件上传
app.post('/upload', upload.single('file'), function (req, res, next) {
  //拼接文件上传后的网络路径,
  var url = 'http://' + req.headers.host + '/upload/' + req.file.originalname;
  //将其发回客户端
  res.json({
    code : 1,
    data : url
  });
  res.end();
});

So implementieren Sie das dynamische Laden von Kombinationsfelder mit Ajax (mit Code)

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <!--依托于jquery-->
  <script src="js/jquery-1.11.3.js"></script>
</head>
<body>
  <p class="container">
    <label>file</label>
    <input type="file" name="file" id="file">
  </p>
<script>
      var file=$("#file")[0];
      //这里使用的是onchange事件,所以当你选择完文件之后,就触发事件上传
      file.onchange=function(){
        //创建一个FormDate
        var formData=new FormData();
        //将文件信息追加到其中
        formData.append('file',file.files[0]);
        //利用split切割,拿到上传文件的格式
        var src=file.files[0].name,
            formart=src.split(".")[1]; 
        //使用if判断上传文件格式是否符合                                                          
                                                              if(formart=="jpg"||formart=="png"||
        formart=="docx"||formart=="txt"||
        formart=="ppt"||formart=="xlsx"||
        formart=="zip"||formart=="rar"||
        formart=="doc"){
        //只有满足以上格式时,才会触发ajax请求
          $.ajax({
            url: '/upload',
            type: 'POST',
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            success: function(data){
            //上传成功之后,返回对象data         
              if(data.code>0){
                var src=data.data;
                    //利用返回值src 网络路径,来实现上传文档的下载    
                    if(formart=="docx"||formart=="txt"||formart=="doc"){
                    //结合css样式,实现显示图标
                  var className="docx";
                    //拼接html,生成到页面上去  
                  var msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
                }else if(formart=="ppt"){
            //PPT 格式
                    className="ppt";
                  msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
                }else if(formart=="xlsx"){
            //xlsx 格式
                    className="xlsx";
                  msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
          }else if(formart=="zip"||formart=="rar"){
          //zip || rar 格式
                    className="zip";
                  msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
                }else{
          //所有的图片格式      
                  msg=`<a href="javascript:;" rel="external nofollow" class="picCheck"><img src="${src}"></a>`;
                }
                // 这里将msg 追加到你要显示的区域 
              }
            } 
         //不满足上传格式时 
        }else{
          alert("文件格式不支持上传")
        }
      }
</script>
</body>
</html>

Das obige ist der detaillierte Inhalt vonAjax+node js multer ermöglicht die Datei-Upload-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn