是否可以根据表格结果从其他网站将某些内容下载到我公司提供的 zip 文件下载中?
Is it possible to download something from another website into a zip file download supplied by my company based on form results?
抱歉,标题令人困惑,但我已尽我所能将其浓缩。需要说明的是,我公司提供了一组可以从我们的网站上(免费)下载的产品(下载文件是一个 zip 文件)。在我们的产品中,我们包括一些目前托管在我们个人服务器上的视频,但我们也有一些视频托管在 Vimeo 上。为了减少服务器流量和下载时间,提出了这个问题,"Can we just run the video download from Vimeo instead of our own server"?好吧,这个问题的答案是肯定的,事实上 Vimeo(如果您是专业会员)提供了不同的方式来下载您自己的个人视频,通过他们的 API 或视频设置中的永久 link。我决定采用永久性 link 路线,因此通过视频设置 Vimeo 提供 5 种不同的 link,每种都根据所需的质量(YAY!)。
但是,我的问题是,是否有某种方法可以通过 php 或 html 在下载页面上创建一个下拉菜单 selection,这取决于您 select(由于带宽等原因)我们提供的内容是否以我们产品的正确文件结构与视频一起下载?
让我澄清一下,不是在下载的 zip 旁边,而是实际放在里面。
例如,假设我的文件结构如下所示:
Product
Books (folder)
Videos (folder)
Other_content (folder)
index.html (file)
并且视频存在于 "Product/Videos/example.mp4"。该文件存在于我的服务器上,但我希望客户改为从 Vimeo 下载它。假设我有下面的基本形式:
<form method="post">
<select name="videoQuality">
<option name="formSelect" value="Select">Select...</option>
<option name="formHD1080" value="HD1080">High Definition (1080p)</option>
<option name="formHD" value="HD">High Definition</option>
<option name="formSD" value="SD">Standard Definition</option>
<option name="formMobile" value="Mobile">Mobile</option>
</select>
<br><br>
<input type="submit" name="formSubmit" value="Download">
</form>
有没有一种方法可以让下载的文件的格式选项代替 "Product/Videos/example.mp4"?而不是在旁边(只是为了让客户不必弄乱文件树)。
是的,您可以使用 jszip 加载 zip 文件。比使用 AJAX 下载视频并将其添加到 zip。所有这一切都发生在浏览器中。
JSZipUtils.getBinaryContent('path/to/content.zip', function(err, data) {
if(err) throw err; // or handle err
var zip = new JSZip(data);
var request = new XMLHttpRequest();
request.open('GET', 'https://vimeo.com/link/to/download', true);
request.onload = function() {
var data = request.responseText;
zip.folder('Videos').file('video.mp4', data); // Add the video file
var blob = zip.generate({type:"blob"});
saveAs(blob, "content.zip"); // Present zip as download
};
request.send();
}
代码未经测试,但应该为您提供足够的信息以继续:)
抱歉,标题令人困惑,但我已尽我所能将其浓缩。需要说明的是,我公司提供了一组可以从我们的网站上(免费)下载的产品(下载文件是一个 zip 文件)。在我们的产品中,我们包括一些目前托管在我们个人服务器上的视频,但我们也有一些视频托管在 Vimeo 上。为了减少服务器流量和下载时间,提出了这个问题,"Can we just run the video download from Vimeo instead of our own server"?好吧,这个问题的答案是肯定的,事实上 Vimeo(如果您是专业会员)提供了不同的方式来下载您自己的个人视频,通过他们的 API 或视频设置中的永久 link。我决定采用永久性 link 路线,因此通过视频设置 Vimeo 提供 5 种不同的 link,每种都根据所需的质量(YAY!)。
但是,我的问题是,是否有某种方法可以通过 php 或 html 在下载页面上创建一个下拉菜单 selection,这取决于您 select(由于带宽等原因)我们提供的内容是否以我们产品的正确文件结构与视频一起下载?
让我澄清一下,不是在下载的 zip 旁边,而是实际放在里面。
例如,假设我的文件结构如下所示:
Product
Books (folder)
Videos (folder)
Other_content (folder)
index.html (file)
并且视频存在于 "Product/Videos/example.mp4"。该文件存在于我的服务器上,但我希望客户改为从 Vimeo 下载它。假设我有下面的基本形式:
<form method="post">
<select name="videoQuality">
<option name="formSelect" value="Select">Select...</option>
<option name="formHD1080" value="HD1080">High Definition (1080p)</option>
<option name="formHD" value="HD">High Definition</option>
<option name="formSD" value="SD">Standard Definition</option>
<option name="formMobile" value="Mobile">Mobile</option>
</select>
<br><br>
<input type="submit" name="formSubmit" value="Download">
</form>
有没有一种方法可以让下载的文件的格式选项代替 "Product/Videos/example.mp4"?而不是在旁边(只是为了让客户不必弄乱文件树)。
是的,您可以使用 jszip 加载 zip 文件。比使用 AJAX 下载视频并将其添加到 zip。所有这一切都发生在浏览器中。
JSZipUtils.getBinaryContent('path/to/content.zip', function(err, data) {
if(err) throw err; // or handle err
var zip = new JSZip(data);
var request = new XMLHttpRequest();
request.open('GET', 'https://vimeo.com/link/to/download', true);
request.onload = function() {
var data = request.responseText;
zip.folder('Videos').file('video.mp4', data); // Add the video file
var blob = zip.generate({type:"blob"});
saveAs(blob, "content.zip"); // Present zip as download
};
request.send();
}
代码未经测试,但应该为您提供足够的信息以继续:)