上载是指将数据从本地系统发送到远程系统(如服务器或其他客户端),目的是远程系统应存储正在传输的数据的副本,或启动此类过程
我正在尝试使用 Multer 上传一组图像。在客户端,我有一个名为图片的 FormData。 图片数组,来自react-native-image-picker: const [图片,setPictures] = useState(...
HTTP 将文件放入 Powershell 并捕获响应正文?
我想使用 PowerShell 上传文件并捕获生成的响应正文。怎样才能做到这一点呢? 我试过了: $env:DEPLOY_URL = &curl.exe https://make.mudlet.org/snapshots/Mudlet-$env:
Codeigniter 3:插入动态输入类型=“文件”课程>部分>媒体字段
让 mediaHtml = ` <div class="mediaItem"> <input type="text" name="sections[${sectionDiv.data('section-id')}][media][${mediaCounter}][</desc> <question vote="0"> <pre><code><script> let mediaHtml = ` <div class="mediaItem"> <input type="text" name="sections[${sectionDiv.data('section-id')}][media][${mediaCounter}][media_title]" placeholder="Media Title"> <input type="file" name="sections[${sectionDiv.data('section-id')}][media][${mediaCounter}][media_name]"> <button type="button" class="removeMedia">Remove Media</button> </div>`; mediaDiv.append(mediaHtml); </script> </code></pre> <p>我正在开发一个项目,通过表单上传媒体文件。每个媒体文件都有一个相应的标题。我在这个项目中使用 CodeIgniter。我面临的问题是,我可以成功地将 <pre><code>media_title</code></pre> 插入数据库,但在将 <pre><code>media_name</code></pre>(文件名)插入存储媒体文件的文件夹时遇到困难。我对 <pre><code>media_title</code></pre> 和 <pre><code>media_name</code></pre> 使用动态字段名称,结构为 <pre><code>sections[X]media[Y]media_name</code></pre> 和 <pre><code>sections[X]media[Y]media_title</code></pre>。如何确保标题和文件名正确插入和管理?</p> <p>初始控制器:</p> <pre><code> if (isset($section['media'])) { foreach ($section['media'] as $media) { $mediaTitle = $media['media_title']; $mediaName = $media['media_name']; $this->ExamModel->save_lesson($sectionId, $mediaTitle, $mediaName); } } </code></pre> </question> <answer tick="false" vote="0"> <pre><code>if (isset($section['media'])) { foreach ($section['media'] as $mediaIndex => $media) { $mediaTitle = $media['media_title']; // Construct the correct file input name $fileInputName = "sections[$sectionIndex][media][$mediaIndex][media_name]"; // Access the uploaded file from $_FILES using the correct keys if (isset($_FILES['sections']['name'][$sectionIndex]['media'][$mediaIndex]['media_name'])) { $mediaName = [ 'name' => $_FILES['sections']['name'][$sectionIndex]['media'][$mediaIndex]['media_name'], 'type' => $_FILES['sections']['type'][$sectionIndex]['media'][$mediaIndex]['media_name'], 'tmp_name' => $_FILES['sections']['tmp_name'][$sectionIndex]['media'][$mediaIndex]['media_name'], 'error' => $_FILES['sections']['error'][$sectionIndex]['media'][$mediaIndex]['media_name'], 'size' => $_FILES['sections']['size'][$sectionIndex]['media'][$mediaIndex]['media_name'] ]; echo "<h2>"; print_r($mediaTitle); echo "</h2>"; // Print the file information echo "<pre>"; print_r($mediaName); echo "</pre>"; $this->ExamModel->save_media($sectionId, $mediaTitle, $mediaName['name']); } else { echo "No file uploaded for section: $sectionIndex, media: $mediaIndex"; } } } </code></pre> </answer> </body></html>
我已经完成了项目的后端和前端文件,需要帮助将其上传到我的域和 Hostinger 上的 VPS?希望任何人都可以协助明确步骤吗? 可以将它们上传到我的 VPS...
Quill 项目中的 PDF 加载失败:Uploadthing URL 上出现 403 禁止错误
这是一个 Next.js 项目,使用 TypeScript、tRPC、带有 Prisma 的 MySQL 和用于矢量数据库的 Pinecone。 Uploadthing用于PDF上传。 PDF上传时,上传成功但无法打开...
更改文件后,如何将其上传到网站进行预览? 我以前使用过 Dreamweaver,它有一个“在浏览器中查看”按钮,可以将文件上传到网站......
我想制作一个脚本来上传文件到FTP。 登录系统如何工作?我正在寻找这样的东西: ftp.login=(mylogin) ftp.pass=(我的密码) 以及任何其他登录凭据。
IBrowserFile FromIMageFileAsync 不完整图像
我正在将图像上传到我的应用程序,并且使用以下代码: 公共静态异步任务 GetThumbnailAndImage(InputFileChangeEventArgs e) { var 文件 = e.File; var ima...
使用 AWS 服务和 Mapbox api 在 Mapbox 上上传大数据集 .geojson 文件
我想在地图网站Mapbox上上传.geojson格式的大数据集文件,但大小限制为5mb,所以我需要使用api上传:https://www.mapbox.com/api-documentation /?语言=
我需要帮助将照片上传到工作网站。以下参数适用于网站的每个页面,除了用于上传照片的“选择”按钮。我在用着: 登录 = driver.find_element(&...
我正在开发vue element-plus上传组件来将图像上传到express服务器。 这是客户端 我正在开发vue element-plus上传组件来将图像上传到express服务器。 这是客户端 <el-upload action="/" :auto-upload="false" :show-file-list="false" :on-change="uploadFile" > const uploadFile = async (file) => { const formData = new FormData(); formData.append("file", file); axios.post( `http://localhost:3000/api/v1/upload`, formData, { headers: { 'Content-Type': 'multipart/form-data' } } ).then(resp => { var rdata = resp.data console.log(rdata); }).catch(error => { console.log(error); }); } 这里是服务器端 import multer from "multer"; const upload = multer({ dest: 'uploads' }) productRoute.post( "/api/v1/upload", upload.single("file"), (req, res) => { console.log('upload 111', req.file); console.log('upload 222', req.body); res.send("success"); } ); 在客户端上传图像成功,但在服务器端我无法接收文件对象,因为 req.file 为空,但 req.body 有内容,如下面的控制台输出所示 upload 111 undefined upload 222 [Object: null prototype] { file: '[object Object]' } 实在不明白为什么 代码正在运行。 下面的代码在您的帖子中使用相同的代码。它对 axios 和后端 api 调用使用相同的代码。服务器端也可以使用您的相同代码正常工作。 总结是,下面的代码工作正常,并且它在后端提供了 req.file 和 req.body 有效引用。它上传文件并打印控制台日志,如下面的测试结果所示。 唯一的区别在于以下代码:它使用以下代码,而不是vue部分。 formData.append('username', 'testname'); const content = '<q id="a"><span id="b">hey!</span></q>'; const blob = new Blob([content], { type: 'text/xml' }); formData.append('file', blob); vue代码 <el-upload action="/" :auto-upload="false" :show-file-list="false" :on-change="uploadFile" > 请单独检查这部分,并确保 uploadFile 函数中引用的对象文件正确。 工作代码 前端 <!DOCTYPE html> <html> <head> This is test upload onload of document <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.2.1/axios.min.js"></script> </head> <body> <script> const uploadFile = async (file) => { const formData = new FormData(); formData.append('username', 'testname'); const content = '<q id="a"><span id="b">hey!</span></q>'; const blob = new Blob([content], { type: 'text/xml' }); formData.append('file', blob); axios .post(`http://localhost:3000/api/v1/upload`, formData, { headers: { 'Content-Type': 'multipart/form-data', }, }) .then((resp) => { var rdata = resp.data; console.log(rdata); }) .catch((error) => { console.log(error); }); }; uploadFile(); </script> </body> </html> 后端 import express from 'express'; import multer from 'multer'; import path from 'path'; const __dirname = import.meta.dirname; const upload = multer({ dest: 'uploads', }); const app = express(); app.get('/', (req, res, next) => { res.sendFile(path.join(__dirname, './index.html')); }); app.post('/api/v1/upload', upload.single('file'), (req, res) => { console.log('upload 111', req.file); console.log('upload 222', req.body); res.send('success'); }); app.listen(3000, () => console.log('L@3000')); 测试结果 服务器控制台: upload 111 { fieldname: 'file', originalname: 'blob', encoding: '7bit', mimetype: 'text/xml', destination: 'uploads', filename: 'b81ec2f4002bd6a9449ece5aefbf0ae4', path: 'uploads/b81ec2f4002bd6a9449ece5aefbf0ae4', size: 38 } upload 222 [Object: null prototype] { username: 'testname' }
如何在swift 2.0中将.pdf文件转换为base64字符串?
我必须在 swift 中上传文档,我必须使用 iCloud 来执行此操作,以便我可以使用 icloud 将文件上传到我的服务器
将播客剧集上传到 Buzzsprout API 时出现 403 错误
编写了以下Python脚本,但出现422错误 导入请求 url =“https://www.buzzsprout.com/api/******/episodes.json” 标题= { “授权”:“令牌
我正在尝试通过 Postman 使用 Asp.net core 上传非常大的文件,大约 15-20 GB。 我已经按照其他帖子中的建议调整了 maxRequestLength 以及 maxAllowedContentLength,但自从...
如何在不提供 ID 的情况下将 OpenCypher 格式的数据上传到 Neptune?
我有点困惑。 OpenCypher MERGE 语句不要求您在加载数据时设置 ID。这是理想的选择,除非您想在其他地方使用其 ID 在外部跟踪每个节点。 然而,
Angular 16 和 Nestjs:上传文件是不可能的(使用 Postman 就完美了)
我正在尝试将文件从 Angular 16 (localhost:4200) 上传到 Nestjs 10 (localhost:3000),并启用 cors。这是我的代码: 角度: 我正在尝试将文件从 Angular 16 (localhost:4200) 上传到 Nestjs 10 (localhost:3000),并启用 cors。这是我的代码: 角度: <!-- html --> <input type="file" name="file" class="form-control" (change)="onChange($event)" /> // Typescript component onChange(event: Event) { const target = event.target as HTMLInputElement; const file = target.files?.[0]; if (file) { const formData = new FormData(); formData.append('file', file, file.name); this.apiService.uploadFile(formData, "1").subscribe(); } } // apiService uploadFile(formData: FormData, id: string) { const params = new HttpParams().set('id', id); const headers = new HttpHeaders().set('Content-Type', 'multipart/form-data'); return this.http.post<FormData>(`${environment.server_url}/files/upload`, {...formData}, {headers, params}); } 直到这段代码,请求才被发出。 NestJs: 请记住:此代码适用于邮递员,但不适用于 Angular。 @Post('upload') @UseInterceptors( FileInterceptor('file', { fileFilter: fileFilter, storage: diskStorage({ destination: './static', filename: fileNamer, }), }), ) async upload( @UploadedFile() file: Express.Multer.File, @Query('id') id: string, @Res() res: Response, ) { console.log('file:', file, 'id:', id); if (!file) { throw new BadRequestException('No Files'); } await this.filesService.saveFileReference(file.filename, id); return res.status(HttpStatus.OK).json({ status: 'ok', message: 'success', }); } 注意: 我在 main.ts (nestjs) 中有以下配置: import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { ValidationPipe } from '@nestjs/common'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableCors(); app.useGlobalPipes( new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, }), ); await app.listen(3000); } bootstrap(); 您可以尝试为'Accept', '*/*'设置标头,并且不要对formData进行解构,而是直接发送。 uploadFile(formData: FormData, id: string) { const params = new HttpParams().set('id', id); const headers = new HttpHeaders() headers = headers.append('Content-Type', 'multipart/form-data'); headers = headers.append('Accept', '*/*'); return this.http.post<FormData>(`${environment.server_url}/files/upload`, formData, {headers, params}); }
后门:在上传的图像文件中检测到PHP/Webshell.O病毒。我应该担心吗?我该如何预防?
我有一个允许用户上传图像的网站。防病毒软件最近检测到一个上传的文件(未扫描上传的文件,这是之后进行的系统范围扫描) 上传后,我检查...
应用程序使用最新版本的 jQuery 文件上传器,有时在上传过程中会观察到 499 错误(客户端关闭请求)。我的假设是,如果用户是我们,就会出现此错误...
如何通过 GitHub Web 界面将新版本的二进制文件上传到 GitHub 存储库
我没有找到将新版本的二进制文件上传到 GitHub 存储库的界面控件。有没有? 带有三个点的按钮:
我正在尝试使用ajax和php将多个图像发送到服务器。 HTML: 我正在尝试使用ajax和php将多个图像发送到服务器。 HTML: <div class="upload-container" id="uploadContainer"> <div class="upload-box show"> <span class="plus-sign">+</span> <input type="file" name="images[]" accept="image/*" multiple> <button class="delete-icon" type="button">×</button> </div> </div> JavaScript: 这通过创建一个方框来设置文件字段的样式,单击该方框将打开图像选择器并包含最多五个文件。工作正常 document.addEventListener('DOMContentLoaded', function() { const uploadContainer = document.getElementById('uploadContainer'); const imageUploadForm = document.getElementById('form-review'); let imageCount = 0; const maxImages = 5; function createUploadBox() { if (imageCount >= maxImages) return; const uploadBox = document.createElement('div'); uploadBox.classList.add('upload-box'); uploadBox.innerHTML = ` <span class="plus-sign">+</span> <input type="file" accept="image/*" name="images[]" multiple> <button class="delete-icon" type="button">×</button> `; uploadContainer.appendChild(uploadBox); setTimeout(() => uploadBox.classList.add('show'), 10); attachUploadEvents(uploadBox); } function attachUploadEvents(uploadBox) { const input = uploadBox.querySelector('input[type="file"]'); const deleteIcon = uploadBox.querySelector('.delete-icon'); uploadBox.addEventListener('click', () => { if (uploadBox.classList.contains('filled')) return; input.click(); }); input.addEventListener('change', (event) => { const files = Array.from(event.target.files); const validFiles = files.slice(0, maxImages - imageCount); validFiles.forEach(file => { const reader = new FileReader(); reader.onload = (e) => { const imgBox = document.createElement('div'); imgBox.classList.add('upload-box', 'show', 'filled'); imgBox.innerHTML = ` <img src="${e.target.result}" alt="Image"> <button class="delete-icon" type="button">×</button> `; uploadContainer.insertBefore(imgBox, uploadContainer.lastElementChild); attachDeleteEvent(imgBox); imageCount++; if (imageCount >= maxImages) { const emptyUploadBox = document.querySelector('.upload-box:not(.filled)'); if (emptyUploadBox) emptyUploadBox.remove(); } }; reader.readAsDataURL(file); }); input.value = ''; }); deleteIcon.addEventListener('click', (event) => { event.stopPropagation(); event.preventDefault(); uploadBox.classList.remove('show'); setTimeout(() => { uploadBox.remove(); imageCount--; ensureOneEmptyUploadBox(); }, 300); }); } window.resetUploadBoxes = function() { const filledUploadBoxes = document.querySelectorAll('.upload-box.filled'); filledUploadBoxes.forEach(box => box.remove()); imageCount = 0; ensureOneEmptyUploadBox(); } function attachDeleteEvent(uploadBox) { const deleteIcon = uploadBox.querySelector('.delete-icon'); deleteIcon.addEventListener('click', (event) => { event.stopPropagation(); event.preventDefault(); uploadBox.classList.remove('show'); setTimeout(() => { uploadBox.remove(); imageCount--; ensureOneEmptyUploadBox(); }, 300); }); } function ensureOneEmptyUploadBox() { const emptyUploadBox = document.querySelector('.upload-box:not(.filled)'); if (!emptyUploadBox && imageCount < maxImages) { createUploadBox(); } } attachUploadEvents(document.querySelector('.upload-box')); $('#button-review').on('click', function() { var formData = new FormData($('#form-review')[0]); // Loop through all file input elements $('input[type="file"]', $('#form-review')).each(function(index, input) { if (input.files.length > 0) { formData.append('image[]', input.files[0]); } }); $.ajax({ url: 'index.php?route=product/product/write&product_id={{ product_id }}', type: 'post', dataType: 'json', data: formData, cache: false, contentType: false, processData: false, beforeSend: function() { $('#button-review').button('loading'); }, complete: function() { $('#button-review').button('reset'); }, success: function(json) { $('.alert-dismissible').remove(); if (json['error']) { $('#review').after('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '</div>'); $('html, body').animate({scrollTop: $("#review").offset().top}, 800); } if (json['success']) { resetUploadBoxes(); $('#review').after('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + '</div>'); $('html, body').animate({scrollTop: $("#review").offset().top}, 800); $('input[name=\'name\']').val(''); $('textarea[name=\'text\']').val(''); $('input[name=\'rating\']:checked').prop('checked', false); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }); }); PHP: $files = []; if (!empty($this->request->files) && is_array($this->request->files)) { foreach ($this->request->files as $key) { if ($key['name'] != "") { $files[] = array( 'name' => $key['name'], 'type' => $key['type'], 'tmp_name' => $key['tmp_name'], 'error' => $key['error'], 'size' => $key['size'] ); } } } 这几乎可以正常工作,但我无法在服务器端接收图像。到达的数组是空的。我可以发送表单文本并且不会发生错误。我分析了代码,包括在人工智能的帮助下,没有发现任何问题。 您需要循环遍历每个文件输入中的所有文件,而不仅仅是附加每个文件中的第一个文件。所以更换 // Loop through all file input elements $('input[type="file"]', $('#form-review')).each(function(index, input) { if (input.files.length > 0) { formData.append('image[]', input.files[0]); } }); 与 // Loop through all file input elements $('input[type="file"]', $('#form-review')).each((index, input) => [...input.files].forEach(file => formData.append('image[]', file) ); 尽管正如CBroe评论的那样,var formData = new FormData($('#form-review')[0])应该已经将文件放入formData并且这个循环是不必要的。