标签: multiple-file-upload

在多文件上传器中单击新文件浏览后如何保留旧文件?

我已经使用 html5+文件阅读器进行了带有文件预览的文件上传,它工作正常,除了用户选择的旧文件会从输入文件字段中销毁,并且如果用户在新的单次浏览单击中进行选择。

这是js小提琴 https://jsfiddle.net/sco3pq3b/

html

<p> UPLOAD  </p>
<input type="file" multiple="yes" name="photo[]" id="photos">
<div id="preview"></div>
Run Code Online (Sandbox Code Playgroud)

js

$("#photos").change(function(){

    var fileList = this.files;
    var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.jpg|.jpeg|.gif|.png|.bmp)$/;

    for(var i = 0; i < fileList.length; i++){
        if (regex.test(fileList[0].name.toLowerCase())) {
            var reader = new FileReader();

            reader.onload = function (e) {
                $('#preview').append('<div class="imgLinkWrap"><a class="fancybox" href="' + e.target.result +'">'+fileList[0].name.toLowerCase()+'</a></div>');
            }
            console.log(fileList[i]);
            reader.readAsDataURL(fileList[i]);

        } else {
            alert(file[0].name + " is not a valid image file.");
            $('#preview').html("");
            return false;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

单击新的浏览文件后,是否有办法在不使用任何插件或ajax的情况下保留旧文件?

html javascript jquery filereader multiple-file-upload

5
推荐指数
1
解决办法
1182
查看次数

如何检查我的输入文件上传的重复项?

我有这个表格,它有一个文件上传按钮。当您选择一个文件时,它会显示在 upload_prev div 中。我的问题是,当我尝试选择同一个文件时,什么也没有发生。我想要一个验证或一种非重复函数来运行。我就是这么做的。我尝试了很多东西和方法,比如使用子节点并查看内部文本是否相同。我尝试使用 jquery 每个循环并获取值,但所有这些都失败了。当我再次选择它时,我想显示一条消息,该文件已经在upload_prev的Box中。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">

  <script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.js"></script>

      <link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css">

      <link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css">

  <style type="text/css">
    .fileUpload {
  position: relative;
  overflow: hidden;
  margin: 10px;
}

.fileUpload input.upload {
  position: absolute;
  top: 0;
  right: 0;
  margin: 0;
  padding: 0;
  font-size: 20px;
  cursor: pointer;
  opacity: 0;
  background-color: #fff;
  filter: alpha(opacity=0);
}

.buttonwrap {
  text-align: center;
  padding-top: 20px;
  float: left;
  display: block;
}

.buttonsend:hover {
  background-color: rgba(255, 255, 255, 0.2);
  color: #225C51; …
Run Code Online (Sandbox Code Playgroud)

javascript jquery duplicates multiple-file-upload

5
推荐指数
2
解决办法
1万
查看次数

Django:限制多次上传的文件类型

我对 Django 还很陌生,并且已经找到了一些关于如何限制通过 Django 的 FileField 上传的文件类型的优秀 答案。但是,这些答案涉及单个文件上传的情况。我正在处理多个文件上传的情况,如下所示:

表格.py

from django.core.exceptions import ValidationError

class DocumentForm(forms.Form):
    def clean_docfile(self):
        file = self.cleaned_data["docfile"]

        if not file.name.endswith('.txt'):
            raise ValidationError(u'Error: Text files only.')

        return file

    docfile = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}),
                              label='Select some files'
                              )
Run Code Online (Sandbox Code Playgroud)

模型.py

from django.db import models
from myproject.myapp.validators import validate_file_extension

class Document(models.Model):
    docfile = models.FileField(upload_to=_upload_path, validators = [validate_file_extension])
Run Code Online (Sandbox Code Playgroud)

验证器.py

from django.core.exceptions import ValidationError

def validate_file_extension(value):
    if not value.name.endswith('.txt'):
        raise ValidationError(u'Error: Text files only.')
Run Code Online (Sandbox Code Playgroud)

我希望用户能够一次上传多个文件,但如果至少有一个文件的文件类型不正确,则所有文件都会被拒绝。

目前,clean_docfile 似乎只检查按字母顺序最后出现的文件名。因此,文件选择 [A.txt, B.txt, C.png] 不会上传(按预期),但 [A.txt, …

python django filefield multiple-file-upload

5
推荐指数
0
解决办法
790
查看次数

MultipleFileField wtforms

class AddProductForm(FlaskForm):
    product_pictures = MultipleFileField('Pictures')
    submit = SubmitField('Add Pictures')

    def product_add_pics():
        form = AddProductForm()
        if form.validate_on_submit():
            if form.product_pictures.data:
                for picture_upload in form.product_pictures.data:
                    print(type(picture_upload))
Run Code Online (Sandbox Code Playgroud)

形式:

<div class="form-group">
    {{ form.product_pictures.label() }}
    {{ form.product_pictures(class="form-control-file") }}
    {% if form.product_pictures.errors %}
        {% for error in form.product_pictures.errors %}
            <span class="text-danger">{{ error }}</span>
        {% endfor %}
    {% endif %}
</div>
Run Code Online (Sandbox Code Playgroud)

我总是将类型作为字符串。我怎样才能得到二进制文件?我使用 wtforms 中的 MultipleFileField。

python flask wtforms multiple-file-upload

5
推荐指数
1
解决办法
2210
查看次数

选择多个文件并使用Jersey上传它们

我需要使用Jersey的多个文件上传帮助.我使用以下代码使用Jersey上传单个文件.

package my.first.rest;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;



import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;

@Path("uploadfile")
public class Upload {
String location;



    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public  String uploadfile(@FormDataParam("file") InputStream is, @FormDataParam("file") FormDataContentDisposition filedetail){



        saveToDisk(is,filedetail);
        return  "File Uploaded Succesfully_"+location;

    }


    private void saveToDisk(InputStream is1,
            FormDataContentDisposition filedetail) {
        // TODO Auto-generated method stub

         location = "E://upload/"+filedetail.getFileName();
        try{
            OutputStream out = new FileOutputStream(new File(location));
            int read = 0;
            byte[] bytes = …
Run Code Online (Sandbox Code Playgroud)

java rest multipartform-data jersey multiple-file-upload

3
推荐指数
2
解决办法
1万
查看次数

使用swagger操作上传多个文件

我目前正在使用 swagger 操作进行多个文件上传。以下是我正在使用的代码:

class uploadImage(Resource):

  @swagger.operation(

        notes='Upload an image file',

        parameters=[
          {
            "name": "file[]",
            "description": "Upload an image file. File size limit is 3MB. Only '.jpg' is allowed ",
            "required": True,
            "allowMultiple": True,
            "dataType": 'file',
            "paramType": "form"
          }
])

def post(self):
    files=request.files.getlist['file[]']
    filenames = []
    for file in files:
        filename = secure_filename(file.filename)
        filenames.append(filename)
        print "Files are uploaded successfully"
Run Code Online (Sandbox Code Playgroud)

虽然我在代码中插入了“allowMultiple”:True,但它没有显示在swagger UI中。服务器启动后,我尝试查看html源代码,“多个”不会显示在表单中。

以下是服务器启动时swagger ui的源代码:

<input class="parameter" type="file" name="file[]">
Run Code Online (Sandbox Code Playgroud)

中缺少“多个”一词。

如果我编辑源代码并添加“多个”一词,如下所示,我可以选择多个文件。

<input class="parameter" type="file" name="file[]" multiple>
Run Code Online (Sandbox Code Playgroud)

在这种情况下, “allowMultiple”:True对我来说不起作用。

对我有什么想法或建议吗? …

rest python-2.7 swagger swagger-ui multiple-file-upload

3
推荐指数
1
解决办法
2万
查看次数

PHP中如何从FormData获取数据和文件

我正在尝试通过 Ajax 将数据(输入文本、下拉列表等)和文件发送到 PHP 文件。我使用此函数添加名为Action 的额外参数。操作可以是以下一些文本:“添加”、“编辑”、“读取”和“删除”(增删改查选项)。请参阅下面的脚本:

\n\n
function recordActions(action_name, id) {\n  //id = (typeof id == "undefined") ? \'\' : id;\n\n  var frm = document.getElementById(action_name + \'_form\');\n  var form_data = new FormData();\n\n  form_data.append(\'action\', action_name);\n  form_data.append(\'fd\', frm);\n\n  $.ajax({\n          type: \'post\',\n          dataType: \'json\',\n          url: \'<?php echo FILENAME_USERS_ACTIONS; ?>\',\n          data: form_data, \n          cache: false,\n          processData: false,\n          contentType: false,\n          success:\n            if (data.action == \'add\' || data.action == \'edit\') {\n                $("#" + action_name + \'_form\')[0].reset();\n                $("#" + action_name + \'_div\').slideUp();\n            }\n            showWeekAgenda();\n\n            } …
Run Code Online (Sandbox Code Playgroud)

php ajax file-upload multiple-file-upload

2
推荐指数
1
解决办法
5405
查看次数