它们似乎都将文件存储在分散的网络中.那么它们在数据结构和算法方面的区别是什么呢?而且在用例方面它们之间有什么区别?
如果我将文件存储在IPFS或Filecoin中,它会永久保留在那里还是会丢失?
我想覆盖django ImageField的上传行为,以便在上传到某个url后,该文件将被添加到ipfs节点.
例如,我的模型类似于:
class Profile(models.Model):
picture = models.ImageField(upload_to=upload_location, blank=True)
Run Code Online (Sandbox Code Playgroud)
我首先尝试保存它,就像任何其他图像一样,但是我给它一个IPFS哈希,这将允许用户加载数据客户端.
在我的视图中,我有以下代码来获取运行ipfs守护程序的实例.
import ipfsapi
from subprocess import call
os.system("ipfs daemon")
api = ipfsapi.connect('127.0.0.1', 5001)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时,python manage.py makemigrations
或者runserver
守护程序运行但命令的其余部分没有运行.
Initializing daemon...
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/174.56.29.92/tcp/4001
Swarm listening on /ip4/192.168.1.109/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
Run Code Online (Sandbox Code Playgroud)
如何启动ipfs守护进程和django服务器?它看起来不像是在同一个端口上监听(Django 8000,IPFS 8080),为什么我遇到这个问题呢?
所以我想把一个网站放在ipfs上,但是它有一些javascript可以调用一个不是ipfs网关的服务器,所以我得到了交叉来源的错误.知道怎么做吗?
我有一个输入字段正在调用_getFile函数
<input type="file" class="file" on-change="_getFile"/>
Run Code Online (Sandbox Code Playgroud)
获取文件
_getFile(event) {
this.loading = true;
const file = event.target.files[0];
let reader = new window.FileReader()
reader.onloadend = () => this._saveToIpfs(reader)
reader.readAsArrayBuffer(file)
}
}
Run Code Online (Sandbox Code Playgroud)
一旦有了数组缓冲区,我们就调用...
_saveToIpfs(data){
}
Run Code Online (Sandbox Code Playgroud)
这是我需要的帮助,我想将选定的文件发送到' https://ipfs.infura.io:5001/api/v0/add '或' https://ipfs.io/api/v0/加 '怎么办?是xhr帖子吗?我希望得到IPFS哈希值
下面的简单形式似乎是上传文件,然后由于错误ERR_CONTENT_LENGTH_MISMATCH而断开连接
<form action="https://ipfs.io/api/v0/add/" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
我也尝试过经典的XHR
_getFile(event) {
const file = event.target.files[0];
var data = new FormData();
data.append('path', event.target.files[0]);
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
if(request.readyState == 4){ …
Run Code Online (Sandbox Code Playgroud) 我正在使用 IPFS 处理这个项目,我正在尝试创建一个网站,允许用户将文件直接从浏览器上传到 IPFS。我的目标是该网站将成为一个前端网站,但是每当我将文件添加到 IPFS 并检查它的哈希值时,https://gateway.ipfs.io/ipfs/hash-here
什么都没有发生,这让我认为这些文件可能没有上传到 IPFS,因为我没有运行它在我的本地机器上。这样对吗?
const Buffer = require('safe-buffer').Buffer;
export default function uploadFiles(node, files) {
let reader = new FileReader();
reader.onloadend = () => {
let byteData = reader.result.split('base64,')[1];
let fileData = Buffer.from(byteData);
node.files.add(fileData, (err, res) => {
if (err) {
throw err
}
let hash = res[0].hash
console.log(hash); ///////prints a hash that isnt visible on
//gateway
node.files.cat(hash, (err, res) => {
if (err) {
throw err
}
let data = ''
res.on('data', (d) => { …
Run Code Online (Sandbox Code Playgroud) 我在 Heroku 上有一个 Django 应用程序,需要与 IPFS 交互。有人找到了运行 IPFS 守护进程的方法吗?为了让 python IPFS API 能够从 IPFS 读取和写入文件,需要它。
在 Heroku 上谷歌搜索 IPFS 是没有用的。
也许有一种明显的方法可以与我的 Django 应用程序一起启动 IPFS 守护进程,但我不知道如何设置它,也就是说,如果可能的话。
我正在尝试使用docker设置2节点专用IPFS群集。为此,我正在使用ipfs/ipfs-cluster:latest
图像。
我的docker-compose文件如下所示:
version: '3'
services:
peer-1:
image: ipfs/ipfs-cluster:latest
ports:
- 8080:8080
- 4001:4001
- 5001:5001
volumes:
- ./cluster/peer1/config:/data/ipfs-cluster
peer-2:
image: ipfs/ipfs-cluster:latest
ports:
- 8081:8080
- 4002:4001
- 5002:5001
volumes:
- ./cluster/peer2/config:/data/ipfs-cluster
Run Code Online (Sandbox Code Playgroud)
启动容器时出现以下错误
ERROR ipfshttp: error posting to IPFS: Post http://127.0.0.1:5001/api/v0/repo/stat?size-only=true: dial tcp 127.0.0.1:5001: connect: connection refused ipfshttp.go:745
Run Code Online (Sandbox Code Playgroud)
是否有关于如何在docker上设置IPFS集群的适当文档。该文档缺少许多细节。
谢谢。
我正在创建一个 vue3 应用程序(使用 Vite 创建),它与用 Solidity 编写并存储在 Ropsten 上的智能合约进行交互。因此,我使用 web3js 与我的智能合约以及 web3.storage 进行交互,以便在 IPFS 上存储一些图像。我的项目根目录中有一个.env
文件,用于存储 web3.storage 的 API 密钥:
VUE_APP_API_TOKEN=VALUE
VITE_API_TOKEN=VALUE
Run Code Online (Sandbox Code Playgroud)
问题是显然 web3.storage 期望 API 令牌存储在 process.env 中,而我无法process
从我的应用程序访问全局变量。我总是收到错误Uncaught ReferenceError: process is not defined
。
我认为,这与我使用 Vite 而不是纯粹的 Vue3 有关。我尝试vite.config.ts
使用该代码导出文件中的进程环境,但它不起作用:
export default ({ mode }) => {
process.env = { ...process.env, ...loadEnv(mode, process.cwd(), '') };
console.log(process.env.VITE_API_TOKEN) //Works fine: VALUE is logged
console.log(process.env.VUE_APP_API_TOKEN) //Works fine: VALUE is logged
return defineConfig({
plugins: [vue()]
});
}
Run Code Online (Sandbox Code Playgroud)
如何 …
我有一个 ipfs 加密的视频 URL。
我无法在 avplayer 中播放视频,但 URL 在 webview 中播放良好。
这是网址: https: //ipfs.moralis.io:2053 /ipfs/QmUjWnQZVVNmTSVak2QDhTxMkn3dPQozxawa1sm3jE5bLr
let currentURL = URL(string: "https://ipfs.moralis.io:2053/ipfs/QmUjWnQZVVNmTSVak2QDhTxMkn3dPQozxawa1sm3jE5bLr")!
let playerItem = AVPlayerItem(url: currentURL)
playerItem.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions(), context: nil)
player = AVPlayer(playerItem: playerItem)let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.avplayerUIView.bounds
self.avplayerUIView.layer.addSublayer(playerLayer)
player.play()
Run Code Online (Sandbox Code Playgroud)
另外,我已将 AVUrlAssets 与视频扩展和视频编解码器一起使用,但视频仍然无法播放
let mimeType = "video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\""
let asset: AVURLAsset = AVURLAsset(url: videoURL!, options: ["AVURLAssetOutOfBandMIMETypeKey" : mimeType])
Run Code Online (Sandbox Code Playgroud)